Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Moderator: Moderatoren
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Das nächste Problem:
Wenn der User interaktiv im geladenen Excel-Sheet ändert (in eine Zelle klickt) ist der Zugriff über das Excel-Objekt auch wieder gesperrt bzw. "unklar". So lange bis der Benutzer die Zelle verlässt/das Editieren beendet.
Habe den Zustand versucht abzufragen, z.B. mit
u1 := oExcel:Application:UserControl
u2 := oExcel:Application:Interactive
aber es scheint als wäre der gesamte Zugriff auf das Excel-Objekt "blockiert". Alle Befehle die ich versucht habe stürzen ab.
(So ein Käse, so langsam ärgert mich das wirklich)
Jemand 'ne Idee?
Wenn der User interaktiv im geladenen Excel-Sheet ändert (in eine Zelle klickt) ist der Zugriff über das Excel-Objekt auch wieder gesperrt bzw. "unklar". So lange bis der Benutzer die Zelle verlässt/das Editieren beendet.
Habe den Zustand versucht abzufragen, z.B. mit
u1 := oExcel:Application:UserControl
u2 := oExcel:Application:Interactive
aber es scheint als wäre der gesamte Zugriff auf das Excel-Objekt "blockiert". Alle Befehle die ich versucht habe stürzen ab.
(So ein Käse, so langsam ärgert mich das wirklich)
Jemand 'ne Idee?
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
ich denke nicht das dir ein "Zustand" (Property) was nützt ... du musst "alle" Events abfangen wenn du "interaktive" arbeiten willst.Roland Gentner hat geschrieben:Habe den Zustand versucht abzufragen, z.B. mit
u1 := oExcel:Application:UserControl
u2 := oExcel:Application:Interactive
...
Jemand 'ne Idee?
Code: Alles auswählen
Worksheet :
*********
Activate
AddRef
BeforeDoubleClick
BeforeRightClick
Calculate
Change
Deactivate
GetIDsOfNames
GetTypeInfo
GetTypeInfoCount
Invoke
QueryInterface
Release
SelectionChange
Workbook:
*******
Activate
AddinInstall
AddinUninstall
AddRef
BeforeClose
BeforePrint
BeforeSave
Deactivate
GetIDsOfNames
GetTypeInfo
GetTypeInfoCount
Invoke
NewSheet
Open
QueryInterface
Release
SheetActivate
SheetBeforeDoubleClick
SheetBeforeRightClick
SheetCalculate
SheetChange
SheetDeactivate
SheetSelectionChange
WindowActivate
WindowDeactivate
WindowResize
Application:
*********
Activate
AddRef
BeforeDoubleClick
BeforeRightClick
Calculate
Deactivate
DragOver
DragPlot
GetIDsOfNames
GetTypeInfo
GetTypeInfoCount
Invoke
MouseDown
MouseMove
MouseUp
QueryInterface
Release
Resize
Select
SeriesChange
gruss by OHR
Jimmy
Jimmy
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Jimmy
ich werde versuchen Deine Liste durchzuarbeiten und schauen ob irgendeine Antwort kommt.
Wenn ich in der Arbeitsmappe in eine Zelle klicke hat es den Anschein als würde Excel jeglichen Zugriff über das Excel-Objekt blockieren bis ich die Eingabe in die Zelle beende.
Versuche ich während dieser Zeit auf das Excel-Objekt zuzugreifen kommt eine Fehlermeldung, meist so:
ich werde versuchen Deine Liste durchzuarbeiten und schauen ob irgendeine Antwort kommt.
Wenn ich in der Arbeitsmappe in eine Zelle klicke hat es den Anschein als würde Excel jeglichen Zugriff über das Excel-Objekt blockieren bis ich die Eingabe in die Zelle beende.
Versuche ich während dieser Zeit auf das Excel-Objekt zuzugreifen kommt eine Fehlermeldung, meist so:
- E R R O R O B J E C T
oError:args:
1 -> VALTYPE: C VALUE: Application
oError:canDefault:.T.
oError:canRetry:.F.
oError:canSubstitute:.T.
oError:cargo:NIL
oError:description:Aufruf wurde durch Aufgerufenen abgelehnt.
oError:filename:NIL
oError:operation:Application
oError:osCode:-2147418111
oError:severity:2
oError:subCode:6500
oError:subSystem:Automation
oError:thread:1
=> Fehler bei der Generierung der ErrorObjectList
- brandelh
- Foren-Moderator
- Beiträge: 15705
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
mal ehrlich, wenn du während deine Anwendung 1000 Datensätze updatest mit Satzsperren, gleichzeitig mit dem HexEditor in der Datei herumschreibst,Roland Gentner hat geschrieben:Das nächste Problem:
Wenn der User interaktiv im geladenen Excel-Sheet ändert (in eine Zelle klickt) ist der Zugriff über das Excel-Objekt auch wieder gesperrt bzw. "unklar". So lange bis der Benutzer die Zelle verlässt/das Editieren beendet.
dann wunderst du dich doch auch nicht oder ?
Wie genau übergibst du eigentlich deine Daten ?
Per Cut&Paste oder weißt du einer Zelle den value zu ? Im ersten Fall ist man extrem darauf angewiesen, dass der Curser weiß wo er zu stehen hat.
Und natürlich ist eine Zelle schreibgeschützt wenn einer darin herumschreibt.
Ich habe doch beschrieben wie man während der Datenübergabe das Blatt verstecken kann, dann kann auch keiner gleichzeitig draum herumfummeln.
Gruß
Hubert
Hubert
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Hubert
es geht vorrangig um das Zusammenspiel meines Progs per Excel-Objekt mit dem interaktiv tätigen User in Excel. Ein häufiges Ein-/Ausblenden des Excel-Fensters wäre unschön.
Z.B. sollen beim Ausarbeiten einer umfangreichen Kalkulationsmappe bereits reelle Werte erscheinen. Der User wählt eine Zelle mit der Maus aus und
- füllt in die Zelle einen vorher vereinbarten Code welcher dann von meinem Prog nach verlassen des Editiermodus der Zelle in den richtigen Wert getauscht wird + Formatierung.
- gibt der Zelle einen von vorher vereinbarten Namen. Mein Prog füllt die Zelle mit dem Referenzwert + Formatierung.
- wählt in meinem Prog aus einer Liste den in der Arbeitsmappe einzutragenden Wert aus.
- usw...
Deshalb meine anfängliche Frage nach der exakten Statusabfrage des Excel-Objekts.
Es scheint so als könnten jederzeit Störungen in der Kommunikation mit dem Excel-Objekt auftreten - insbesondere bei User-Eingriffen. Es wär nicht verkehrt die Wichtigsten zu kennen und möglichst abzufangen.
Das automatisierte ein-/auslesen von Werten in/aus einem vollständig vordefinierten Arbeitsblatt ist ein anderes Thema.
es geht vorrangig um das Zusammenspiel meines Progs per Excel-Objekt mit dem interaktiv tätigen User in Excel. Ein häufiges Ein-/Ausblenden des Excel-Fensters wäre unschön.
Z.B. sollen beim Ausarbeiten einer umfangreichen Kalkulationsmappe bereits reelle Werte erscheinen. Der User wählt eine Zelle mit der Maus aus und
- füllt in die Zelle einen vorher vereinbarten Code welcher dann von meinem Prog nach verlassen des Editiermodus der Zelle in den richtigen Wert getauscht wird + Formatierung.
- gibt der Zelle einen von vorher vereinbarten Namen. Mein Prog füllt die Zelle mit dem Referenzwert + Formatierung.
- wählt in meinem Prog aus einer Liste den in der Arbeitsmappe einzutragenden Wert aus.
- usw...
Deshalb meine anfängliche Frage nach der exakten Statusabfrage des Excel-Objekts.
Es scheint so als könnten jederzeit Störungen in der Kommunikation mit dem Excel-Objekt auftreten - insbesondere bei User-Eingriffen. Es wär nicht verkehrt die Wichtigsten zu kennen und möglichst abzufangen.
Das automatisierte ein-/auslesen von Werten in/aus einem vollständig vordefinierten Arbeitsblatt ist ein anderes Thema.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Dann laß doch den User in deinem Programm die Werte eingeben (z.B. in einem Browse mit Cell-Editing) und übertrage dann die Werte in einem Rutsch. Ist meines Erachtens efektiver als immer hin- und her zuschalten.
Viele Grüße
Wolfgang
Wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15705
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Ich denke nicht, dass dieses Verhalten von Excel / ActiveX vorgesehen war.
Nach meinen Erfahrungen ist genau dieses Verhalten (gemeinsamer Zugriff) nicht sinnvoll.
Und warum den Code in Excel eingeben und in deinem Programm dann in einer Liste suchen ?
Ich würde dafür ein kleineres Fenster bauen, das von den Eigenschaften XbpDialog():alwaysOnTop := .t. ist.
IN Excel die Zielzelle wählen und dann mit der Maus auf dein Fenster klicken (Fokuswechsel geht nicht automatisch).
Dort im XbpSLE das Kürzel oder die Werte erfasssen oder gleich aus einer Liste auswählen und per XbpPushbutton() die Übergabe veranlassen.
Nach meinen Erfahrungen ist genau dieses Verhalten (gemeinsamer Zugriff) nicht sinnvoll.
Und warum den Code in Excel eingeben und in deinem Programm dann in einer Liste suchen ?
Ich würde dafür ein kleineres Fenster bauen, das von den Eigenschaften XbpDialog():alwaysOnTop := .t. ist.
IN Excel die Zielzelle wählen und dann mit der Maus auf dein Fenster klicken (Fokuswechsel geht nicht automatisch).
Dort im XbpSLE das Kürzel oder die Werte erfasssen oder gleich aus einer Liste auswählen und per XbpPushbutton() die Übergabe veranlassen.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9391
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 363 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Ich verwende Excel in einer ähnlichen Situation so, wie Wolfgang das angedeutet hat. Es geht konkret z.B. um das Ausfüllen von Controlling-/Benchmarking-Tabellen, die von einem Institut vorgefertigt werden. Die zu besetzenden Zellen sind mit Namen versehen, das Layout aber wechselt halbjährlich. In der Anwendung werden Daten erhoben, dazu erscheint dann ein Eingabefenster, um die zusätzlich erforderlichen Daten zu erfassen. Anschließend erzeugt die Anwendung eine Kopie der Vorlage, öffnet sie versteckt, füllt sie mit den Daten - und erst wenn das alles geklappt hat, wird Excel abermals sichtbar gestartet, mit der ausgefüllten Tabelle.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15705
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Wer Tabellen versteckt ausfüllen und in Abhängigkeit zu Inhalten etwas damit tun will, sollte sich auch mal die LibXL.DLL (mit meiner Klasse HBLibXL) ansehen,
man braucht kein Excel und es geht schneller als mit ActiveX. Bei einigen 100 bis 1000 Werten macht das schon was aus.
man braucht kein Excel und es geht schneller als mit ActiveX. Bei einigen 100 bis 1000 Werten macht das schon was aus.
Gruß
Hubert
Hubert
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Danke für Eure Vorschläge und Bedenken.
Es gibt manchmal einige Wege die zum Ziel führen - in diesem Fall also per Xbase++ mit Excel-Tabellen zu kommunizieren.
Der von mir beschriebene ist eben ein anderer Weg. Interaktiv teilautomatisiert
Vor allen Dingen ist es so gewollt. Es ist auch immer eine Frage des Betrachtungswinkels.
Und es funktioniert seit heute Nacht auch einigermaßen (in rudimentärer Form...).
Mal sehen wie viele neue Stolpersteine der Live-Betrieb mit sich bringt...
Nichts desto trotz lässt die Statusabfrage des Excel-Objekts zu wünschen übrig. Damit kann ich leben - der Endkunde muss damit leben.
Es gibt manchmal einige Wege die zum Ziel führen - in diesem Fall also per Xbase++ mit Excel-Tabellen zu kommunizieren.
Der von mir beschriebene ist eben ein anderer Weg. Interaktiv teilautomatisiert
Vor allen Dingen ist es so gewollt. Es ist auch immer eine Frage des Betrachtungswinkels.
Und es funktioniert seit heute Nacht auch einigermaßen (in rudimentärer Form...).
Mal sehen wie viele neue Stolpersteine der Live-Betrieb mit sich bringt...
Nichts desto trotz lässt die Statusabfrage des Excel-Objekts zu wünschen übrig. Damit kann ich leben - der Endkunde muss damit leben.
- brandelh
- Foren-Moderator
- Beiträge: 15705
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Stimmt, es wäre besser wenn Microsoft da mehr getan hätteRoland Gentner hat geschrieben:Nichts desto trotz lässt die Statusabfrage des Excel-Objekts zu wünschen übrig. Damit kann ich leben - der Endkunde muss damit leben.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Nö ... es ist der Weg den du benutzt. Es gab da mal ein "DSOFramer.FramerControl" ...Roland Gentner hat geschrieben:Nichts desto trotz lässt die Statusabfrage des Excel-Objekts zu wünschen übrig.
gruss by OHR
Jimmy
Jimmy
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2127
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Vorsicht, DSOFramer funktioniert nur bis einschließlich Office 2007!AUGE_OHR hat geschrieben:Nö ... es ist der Weg den du benutzt. Es gab da mal ein "DSOFramer.FramerControl" ...
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Jimmy
was ist das?AUGE_OHR hat geschrieben:Es gab da mal ein "DSOFramer.FramerControl" ...
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2127
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Alaska xpp-compilation-de
Aber ich rate dringend davon ab! Ist eine Sackgasse. Ist uralt das OCX von Microsoft und wird nicht mehr weiterentwickelt. Es gibt keine bezahlbare Alternative dazu!
Aber ich rate dringend davon ab! Ist eine Sackgasse. Ist uralt das OCX von Microsoft und wird nicht mehr weiterentwickelt. Es gibt keine bezahlbare Alternative dazu!
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Werner
also OSD...= totes Gleis,
Danke
also OSD...= totes Gleis,
Danke
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
YUP ... darauf wollte ich bei Roland hinausWerner_Bayern hat geschrieben:Aber ich rate dringend davon ab! Ist eine Sackgasse.
der DSOframer war ja ein Versuch von M$ Office COM als Control "in" einer Applikation zu verwenden wobei die Events an den Parent weitergeleitet werden.
Die Office COM Schnittstelle ist ja bi-direktional ausgelegt und bei jeder User Tätigkeiten wird ein Event "gesendet".
man sollte schon "alle" Events "auswerten" ... egal was man dann macht {|| NIL }.
gruss by OHR
Jimmy
Jimmy
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Klaus
bin erst jetzt dazugekommen Deinen Vorschlag zu testen:
Muss ich ein "anderes" oBook verwenden?
Das wäre schon eine prima Funktion...
bin erst jetzt dazugekommen Deinen Vorschlag zu testen:
Da bekomme ich aber eine Fehlermeldung:Koverhage hat geschrieben:oBook:BeforeClose := {||lExcelFinished := .T.}
Habe Win8 + Office 2010oError:args:
1 -> VALTYPE: C VALUE: BeforeClose
2 -> VALTYPE: B VALUE: {||lExcelFinished := .T.}
oError:description:Unbekannter Name.
Member-Variable ist für dieses Objekt unbekannt
oError:operation:BeforeClose
oError:osCode:-2147352570
oError:severity:2
oError:subCode:6500
oError:subSystem:Automation
oError:thread:1
Muss ich ein "anderes" oBook verwenden?
Code: Alles auswählen
oBook := oExcel:ActiveWorkBook
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
ERGÄNZUNG
habe gerade noch etwas gefunden in einem älteren Beitrag:
http://www.xbaseforum.de/viewtopic.php? ... ast#p28657
Damit scheint es zu gehen...
habe gerade noch etwas gefunden in einem älteren Beitrag:
http://www.xbaseforum.de/viewtopic.php? ... ast#p28657
Damit scheint es zu gehen...
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
dann kannst du ja jetzt auch die Events verarbeiten.Roland Gentner hat geschrieben:dynamiccast...
Damit scheint es zu gehen...
gruss by OHR
Jimmy
Jimmy
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Jimmy
hatte mich in der Vergangenheit mit DynamicCast() nicht weiter beschäftigt - jetzt weiß ich wenigstens auch wann und warum man das manchmal braucht.
Noch was anderes:
Die Zeile sollte mir eigentlich zeigen wenn ein geändertes Arbeitsblatt bereits gespeichert wurde. Tut es aber nicht, es kommt immer .F. zurück.
Auch wenn ich in Excel gerade "speichern" gedrückt habe.
Suche eigentlich eine Funktion welche mir sagt ob der Benutzer in Excel irgend etwas geändert hat. Dass ich Ihn beim Verlassen von Excel fragen kann ob er "Speichern" will.
Im Moment wird er immer gefragt, auch wenn nichts geändert wurde.
So einen "geändert"-Flag müsste es im Excel-Objekt doch bereits geben - oder?
hatte mich in der Vergangenheit mit DynamicCast() nicht weiter beschäftigt - jetzt weiß ich wenigstens auch wann und warum man das manchmal braucht.
Noch was anderes:
Code: Alles auswählen
lSaved := oBook:Saved
Auch wenn ich in Excel gerade "speichern" gedrückt habe.
Suche eigentlich eine Funktion welche mir sagt ob der Benutzer in Excel irgend etwas geändert hat. Dass ich Ihn beim Verlassen von Excel fragen kann ob er "Speichern" will.
Im Moment wird er immer gefragt, auch wenn nichts geändert wurde.
So einen "geändert"-Flag müsste es im Excel-Objekt doch bereits geben - oder?
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
mit CreateObject() kannst du ja KEINE activeX Events mit o:subscribeEvent() "abonnieren" sondern muss erst per DynamicCast() ein ActiveXObject() machen.Roland Gentner hat geschrieben:hatte mich in der Vergangenheit mit DynamicCast() nicht weiter beschäftigt - jetzt weiß ich wenigstens auch wann und warum man das manchmal braucht.
ein Arbeitsblatt ist ein "Worksheet" ...Roland Gentner hat geschrieben: Noch was anderes:Die Zeile sollte mir eigentlich zeigen wenn ein geändertes Arbeitsblatt bereits gespeichert wurde.Code: Alles auswählen
lSaved := oBook:Saved
Tut es aber nicht, es kommt immer .F. zurück.
hm ...Roland Gentner hat geschrieben:Auch wenn ich in Excel gerade "speichern" gedrückt habe.
lege mal ein "neues" Workbook an und frage dann die o:Saved Property ab wenn es noch NICHT gespeichert wurde.
für "Worksheet" gibt es den "Change" Event.Roland Gentner hat geschrieben:Suche eigentlich eine Funktion welche mir sagt ob der Benutzer in Excel irgend etwas geändert hat. Dass ich Ihn beim Verlassen von Excel fragen kann ob er "Speichern" will.
Im Moment wird er immer gefragt, auch wenn nichts geändert wurde.
So einen "geändert"-Flag müsste es im Excel-Objekt doch bereits geben - oder?
gruss by OHR
Jimmy
Jimmy
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
Hallo Jimmy
mit oSheet:Change
so wie mit
oBook:SheetChange
habe ich rumprobiert. Keiner der Events wird ausgelöst - zumindest nicht in meinen Tests
Ich muss ja dort Parameter angeben - wo landet das ausgelöste Signal dann aber...?
Ergänzung:
Meine Frage muss vermutlich lauten: Wie belege ich den jeweiligen Event-Kanal mit einer Funktion (Block)?
NOCHMAL NACHTRAG:
Habs gefunden...
mit oSheet:Change
so wie mit
oBook:SheetChange
habe ich rumprobiert. Keiner der Events wird ausgelöst - zumindest nicht in meinen Tests
Ich muss ja dort Parameter angeben - wo landet das ausgelöste Signal dann aber...?
Ergänzung:
Meine Frage muss vermutlich lauten: Wie belege ich den jeweiligen Event-Kanal mit einer Funktion (Block)?
NOCHMAL NACHTRAG:
Habs gefunden...
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
trotzdem seltsam:
beisollte bei cRange ein String zurückkommen, es wird aber ein Objekt übergeben. Ein Range-Objekt?
bei
Code: Alles auswählen
oSheet:Change := { | oSheet , cRange | ChkCell1( oSheet , cRange ) }
so wie bei
oBook:SheetChange := { | cRange | ChkCell2( cRange ) }
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel-Object: Excel geöffnet? Arbeitsblatt geladen?
em ... äh ... wir sprechen von activeX Events und nicht von Property wo du "etwas" ( Codeblock ) zuweisen könntest.Roland Gentner hat geschrieben:sollte bei cRange ein String zurückkommen, es wird aber ein Objekt übergeben. Ein Range-Objekt?Code: Alles auswählen
oSheet:Change := { | oSheet , cRange | ChkCell1( oSheet , cRange ) } so wie bei oBook:SheetChange := { | cRange | ChkCell2( cRange ) }
ein activeX Event musst du "abonnieren" mit o:subscribeEvent()
Code: Alles auswählen
cEventName := "Change"
nDISPID := oSheet:isEventPublished( cEventName )
IF nDISPID <> 0
lSuccess := oSheet:SubscribeEvent( nDISPID, { |a| MSGBOX("Change "+Var2Char(a)) } )
IF lSuccess
AADD(aEvents,{cEventName,nDISPID})
ENDIF
ENDIF
Code: Alles auswählen
oSheet := oSheet:dynamicCast( ActiveXObject() )
( p.s. dito das selbe für "Workbook" und "Application" also jede COM Class die du benutzt )
... und am Schluss "aufräumen" nicht vergessen d.h. mit o:unsubscribeEvent() alle Verbindungen lösen bevor du die jeweilige COM Class wieder auf NIL setzt.
gruss by OHR
Jimmy
Jimmy