Seite 5 von 6
Verfasst: 20.01.2007 20:08
von dysti
Habe den Fehler im ersten Beispiel noch nicht untersucht.
Verfasst: 20.01.2007 20:21
von schic
was genau hakelt an der Zeile
Code: Alles auswählen
pxlSheets.IDispatch = SetComObj(pXlBookThatWasOpened, "Worksheets", 0)
fehlt´s schon am GetIDsOfNames, dann müßte schon vorher bei invoke
für pXlBookThatWasOpened ein Fehler ausgegeben werden
-> hr Invoke: irgendein Minuswert.
Wo genau kommt der erste Fehler?
Wenn die Arbeitsmappe garnicht angezeigt wird, ist der Fehler schon
ganz am Anfang beim Öffnen oder noch früher.
Dann müßten lauter "hr Invoke:
-xyz..." ausgegeben werden
Verfasst: 21.01.2007 14:44
von dysti
Betrifft: letztes gepostetes Beispiel
Hier die Fehlermeldung:
die Arbeitsmappe wird nicht angezeigt.
Verfasst: 21.01.2007 15:53
von dysti
Er hat Schwierigkeiten mit dem öffnen de Exeldatei.
Verfasst: 21.01.2007 19:17
von schic
es handelt sich wohl um den Fehler EXCEPTION_ACCESS_VIOLATION
->
http://support.microsoft.com/kb/101774/en-us
Hilft aber so auch nicht weiter. Habe erst mal auch keine Idee...
Teste mal in der Procedure.l AutoWrap
Code: Alles auswählen
hr = *pDisp\Invoke(dispID, IID_NULL, #CLSCTX_ALL, autoTyp, @dp, @pvResult, @Exception, #Null)
statt
Code: Alles auswählen
hr = *pDisp\Invoke(dispID, IID_NULL, #LOCALE_SYSTEM_DEFAULT, autoTyp, @dp, @pvResult, @Exception, #Null)
Glaube aber nicht, daß es daran liegt

Verfasst: 21.01.2007 20:01
von schic
die DispId von Open für das Workbooks-Objekt müsste 1923 sein.
Bei Dir zeigt´s 682 an. Scheint Du hast Open von einem anderen Objekt
verwendet. Könnte aber evtl. auch an unterschiedlichen Excel-Versionen
liegen. Weiß nicht ob die IDs auf jedem System gleich sind oder
variabel vergeben werden.
Verfasst: 22.01.2007 08:05
von dysti
Also, ich habe eine ganz große Bitte an die Forum-Mitglieder mit Exel auf dem Rechner:
Könntet ihr das letzte Beispiel mal in eurer PB-IDE laden und ausprobieren.
Dazu müßt ihr allerdings auch den Wrapper auf Seite 2 mit einfügen.
Wie läuft es bei Euch. Wenn es läuft, könntet ihr dann mal die Exelversion mitteilen, z.B. Exel2000, evtl. PB-Version.
Vielleicht kommen wir so den Fehler auf der Spur.
Verfasst: 22.01.2007 12:51
von dysti
Hallo ,
wie gut, das PB auch auf einem USB-Stick läuft.
Bei Kumpels auf den Rechnern probiert.
Und jetzt kommt der Hammer:
Erstmal die gute Nachricht: das Beispiel läuft.
Die schlechte Nachricht: das Beispiel läuft nicht.
Jetzt wird der Hund in der Pfanne verrückt.
Also, das Beispiel mit PB 4.02 laufen gelassen.
Ergebnis: Fehler
das Beispiel unter 4.0 laufen lassen.
Ergebnis: es läuft
@schic: wieso läuft es unter 4.02 nicht?
Verfasst: 22.01.2007 13:28
von dysti
@schic: wenn man ein Datum in Exel einträgt in der Form "21.04.07", dann formatiert Exel automatisch die Zelle. Man bekommt keine Standardformatierung der Zelle mit diesem Inhalt.
Es steht dieser Wert nun in dieser Zelle. Keine der beiden Funktionen liest den Inhalt, bzw. zeigt ihn an. Datumwerte sind nun aber üblich in einer Exeltabelle.
Wie bekommt man jetzt das Datum ausgelesen. Aber weiß man vorher, ob ein Datum dort drin steht?
Verfasst: 22.01.2007 21:34
von schic
zu dem Datum auslesen kann ich Dir helfen.
Füge in Die Procedure XLGetCellsValue bei Select pvResult\vt
Code: Alles auswählen
Case #VT_DATE
#VARIANT_NOUSEROVERRIDE = 4
hr = VariantChangeType_(pvResult, pvResult, #VARIANT_NOUSEROVERRIDE, #VT_BSTR)
If Not hr = #S_OK
Debug "error VariantChangeType_ hr: " + Str(hr)
EndIf
tmpText$ = Uni2Ansi(pvResult\bstrVal)
result = @tmpText$
ein, dann bekommst Du ein schön formatiertes Datum in Textformat.
Siehe hierzu und für weiterführende Informationen
http://msdn2.microsoft.com/en-gb/library/ms221634.aspx
Warum der Code unter PB 4.02 nicht läuft weiß ich nicht
Ein Bug im Code oder in PB oder ...
Hat jemand eine Idee dazu, oder wie man das Problem eingrenzen könnte?