Discussion:
Öffnen aus Visual Basic nicht mehr möglich
(zu alt für eine Antwort)
Erik Reischl
2003-11-13 16:14:08 UTC
Permalink
Hallo allerseits,

ich hoffe, ich bin hier richtig. Ich habe mit Visual Basic 6.0 ein Programm
geschrieben, mit dem ich eine Excel97-Mappe öffne und auslese.

Ein Verweis auf "Microsoft Excel 8.0 Object Library" ist gesetzt.

Dann habe ich mit

Dim xBook As Excel.Workbook

die Variable definiert und mit

Set xBook = Workbooks.Open("C:\blablabla.xls")

die Datei geöffnet. Das funktionierte vor einigen Monaten noch prima.

Heute startete ich das Programm wieder und erhielt:

"Laufzeitfehler '-2146960888 (8007fa08)': Die Methode 'Open' für das Objekt
'Workbooks' ist fehlgeschlagen"

Ich habe auch schon folgendes probiert:

Dim xApp As Excel.Application
Set xApp = New Excel.Application
Set xBook = xApp.Workbooks.Open("C:\blablabla.xls")

Dasselbe. Ich kann über VB überhaupt keine Excel-Dateien mehr öffnen. Habe
keinen blassen Schimmer, woran das liegen könnte und was ich tun soll :-(((

Ich hab' auch keine Ahnung, was denn nun "anders" an meinem PC ist, also ob
ich da jetzt irgendwas installiert habe. Jedenfalls kein neues Excel/Office
oder VB.

Weiß jemand von Euch Rat?

Viele Grüße,

Erik


--
Two roads diverged in a wood, and I -
I took the one less traveled by...
(Robert Frost)

www.erik-reischl.de
Philipp von Wartburg
2003-11-13 20:07:31 UTC
Permalink
Hallo Erik

Dass die Codezeile
Set xBook = Workbooks.Open("C:\blablabla.xls")
nicht (bzw. nicht immer) funktioniert, kann ich nachvollziehen. Weil
"Workbooks.Open(...)" ein sogenannter unqualifizierter Methoden-
aufruf ist, startet VB intern eine zweite Excelinstanz, also zusätzlich zu
derjenigen, die du explizit für xBook angelegt hast. Diese zweite, nicht
sichtbare Instanz wird nie mehr beendet (ausser wenn Windows be-
endet wird). Deine andere Lösung mit
Set xBook = xApp.Workbooks.Open(...)
ist dagegen korrekt und müsste IMHO funktionieren. Dass trotzdem
ein Fehler auftritt, ist nicht gut.

Die Excel Object Library wird von VB gefunden und sie scheint auch
korrekt registriert zu sein. Auch die ProgID 'Excel.Application' scheint
korrekt in der Registry eingetragen zu sein. Anderenfalls würde bereits
beim Instanzieren des Excel Application-Objektes (Set xApp = ...) ein
Fehler auftreten. Es könnte sein, dass der Registryeintrag zu 'Excel.Sheet'
defekt ist. Das ist jedoch eine reine Annahme. Auf jeden Fall solltest
du bei Auftreten der Fehlermeldung VB komplett beenden; besser noch
Windows. Dadurch wird eine im Hintergrund laufende Excel-Instanz
beendet und aus dem Speicher entfernt. Du kannst auch mal versuchen,
Excel mittels Late Binding zu starten (z.Z. verwendest du Early Binding).
Schreibe dazu
Dim xApp As Object
Dim xBook As Object
Set xApp = CreateObject("Excel.Application")
Set xBook = xApp.Workbooks.Open(...)
und entferne vor der Codeausführung den Verweis auf die Excel-
Bibliothek. Den braucht es nicht mehr.

Hier noch ein paar interessante Artikel von MS:
- "Excel Automation Fails Second Time Code Runs"
http://support.microsoft.com/?scid=kb;EN-US;178510
- "Automation Error Calling Unqualified Method or Property"
http://support.microsoft.com/?scid=kb;EN-US;189618
- "Translating Automation Errors for VB/VBA (Long)"
http://support.microsoft.com/?scid=kb;en-us;186063

Gruss
Philipp von Wartburg
Post by Erik Reischl
Hallo allerseits,
ich hoffe, ich bin hier richtig. Ich habe mit Visual Basic 6.0 ein Programm
geschrieben, mit dem ich eine Excel97-Mappe öffne und auslese.
Ein Verweis auf "Microsoft Excel 8.0 Object Library" ist gesetzt.
Dann habe ich mit
Dim xBook As Excel.Workbook
die Variable definiert und mit
Set xBook = Workbooks.Open("C:\blablabla.xls")
die Datei geöffnet. Das funktionierte vor einigen Monaten noch prima.
"Laufzeitfehler '-2146960888 (8007fa08)': Die Methode 'Open' für das Objekt
'Workbooks' ist fehlgeschlagen"
Dim xApp As Excel.Application
Set xApp = New Excel.Application
Set xBook = xApp.Workbooks.Open("C:\blablabla.xls")
Dasselbe. Ich kann über VB überhaupt keine Excel-Dateien mehr öffnen. Habe
keinen blassen Schimmer, woran das liegen könnte und was ich tun soll :-(((
Ich hab' auch keine Ahnung, was denn nun "anders" an meinem PC ist, also ob
ich da jetzt irgendwas installiert habe. Jedenfalls kein neues
Excel/Office
Post by Erik Reischl
oder VB.
Weiß jemand von Euch Rat?
Viele Grüße,
Erik
--
Two roads diverged in a wood, and I -
I took the one less traveled by...
(Robert Frost)
www.erik-reischl.de
Erik Reischl
2003-11-15 09:34:08 UTC
Permalink
Hallo Philipp,
Post by Philipp von Wartburg
Du kannst auch mal versuchen,
Excel mittels Late Binding zu starten (z.Z. verwendest du Early Binding).
Schreibe dazu
Dim xApp As Object
Dim xBook As Object
Set xApp = CreateObject("Excel.Application")
Set xBook = xApp.Workbooks.Open(...)
und entferne vor der Codeausführung den Verweis auf die Excel-
Bibliothek. Den braucht es nicht mehr.
mit Late Binding funktioniert es tatsächlich! Leider habe ich keinen blassen
Schimmer, warum. Hast Du eine Idee, warum das so sein könnte? Oder jemand
anderes?

Jedenfalls vielen Dank für den Tip!

Erik


--
Two roads diverged in a wood, and I -
I took the one less traveled by...
(Robert Frost)

www.erik-reischl.de
Philipp von Wartburg
2003-11-15 22:46:12 UTC
Permalink
Hallo Erik

Das ist ja schon mal gut, dass es mit Late Binding funktioniert.
Die Frage, warum es funktioniert, kann ich dir tatsächlich nicht
beantworten. Ich erlaube mir zu behaupten, dass ich mich mit
Automation auskenne (habe schon dutzende - auch grössere -
Geschäftsanwendungen damit geschrieben), kenne aber derartige
Probleme nur in Zusammenhang mit verschiedenen Office-
Versionen auf der gleichen Maschine oder nach einem Office-
Versionswechsel. Zudem ist Excel in dieser Beziehung gar nicht
heikel; bei Word und Access sieht das schon anders aus. Da du
erwähnt hast, dass an PC und Office nichts verändert wurde, fällt
mir kein Grund ein, wieso es mit Early Binding nicht funktionieren
sollte.

Vielleicht gibt dir dieser MS KB-Artikel einen Hinweis:
"INFO: Error or Unexpected Behavior with Office Automation
When You Use Early Binding in Visual Basic"
http://support.microsoft.com/?scid=kb;en-us;Q319832

Gruss
Philipp von Wartburg
Post by Erik Reischl
Hallo Philipp,
Post by Philipp von Wartburg
Du kannst auch mal versuchen,
Excel mittels Late Binding zu starten (z.Z. verwendest du Early Binding).
Schreibe dazu
Dim xApp As Object
Dim xBook As Object
Set xApp = CreateObject("Excel.Application")
Set xBook = xApp.Workbooks.Open(...)
und entferne vor der Codeausführung den Verweis auf die Excel-
Bibliothek. Den braucht es nicht mehr.
mit Late Binding funktioniert es tatsächlich! Leider habe ich keinen blassen
Schimmer, warum. Hast Du eine Idee, warum das so sein könnte? Oder jemand
anderes?
Jedenfalls vielen Dank für den Tip!
Erik
--
Two roads diverged in a wood, and I -
I took the one less traveled by...
(Robert Frost)
www.erik-reischl.de
Lesen Sie weiter auf narkive:
Loading...