Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A

VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
15.01.2021 18:45:46
Norbert
Hallo Excel Experten,
ich habe hier ein für mich nicht erklärbares Phänomen.
Es tritt nur im Zusammenhang mit Microsoft Access auf.
Ich habe schon seit vielen Jahren ein umfangreiches "Excel-Projekt", es besteht aus einer Excel-Vorlagendatei/Datendatei und einer Excel-Datei in welcher sich alles mit VBA und Vorlageblättern befindet.
Beim Öffnen der Datendatei wird die Datei mit den Makros, welche sehr umfangreich sind, automatisch geöffnet.
Dies geschieht über VBA-Code in "DieseArbeitsmappe Workbook.Open"
Das Phänomen ist jetzt folgendes:
Wird die Datendatei "normal" geöffnet gibt es kein Problem, die Datei mit den Markos wird immer ebenfalls ohne Fehler gestartet.
Ich habe aber jetzt auch noch eine Access Datenbank in welcher ich eine Liste mit den angelegten Datendateien führe.
Die Excel- Datendateien sind dort als Objekte verknüpft.
Wenn ich Verknüpfung in der Access Datenbank anwähle öffnet sich Excel mit der Datendatei.
Und hier kommt es jetzt zum Fehler beim automatischen Öffnen der Datei mit den Makros.
Der Vorgang wird mit einem Laufzeitfehler '1004': Die Methode 'Open' für das Objekt 'Workbooks' ist fehlgeschlagen, abgebrochen.
An dem Code ist jetzt nichts wirklich spezielles er sieht wie folgt aus (nur das entscheidende) und der Fehler tritt bei Workbooks.Open(s) auf.
Private Sub Workbook_Open()
Dim s As String
Dim wb As Workbook
Dim fs As Object
s = "xyz"    'Dateiname wird vorbelegt
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileexists(s) Then     'Kontrolle ob Datei vorhanden
Set wb = Workbooks.Open(s)     'Datei öffnen
End If
End Sub

Wenn man die Fehlermeldung übrigens mit "Beenden" abbricht ist die Excel-Datendatei normal geöffnet. Die Datei mit den Makros aber natürlich nicht.
Vielleicht kennt ja jemand von Euch die Ursache für diese Verhalten und weiß wie man es abstellen kann.
Ich habe irgendwie die Vermutung das es an Sicherheitseinstellungen liegt.
Aber warum geht es dann beim direkten Öffnen aber nicht beim Öffnen von Access aus.
Ich bedanke mich schon mal im Voraus für die Bemühung.
Es grüßt Euch
Norbert
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
15.01.2021 21:46:48
Yal
Hallo Norbert,
hui, schwierige Fall.
Access öffnet eine Exceldatei (Datei1), die Workbook_open-Ereignis hat. In dieser WB_open scheitert irgendwas.
Verstehe ich dein Code richtig: in dem Workbook_open-Ereignis wird ein zweiten Excel-Datei (Datei2) geöffnet?
VG
Yal
Frage ist noch offen. oT
15.01.2021 22:10:38
Yal
Sorry, habe den Hacken vergessen, da ich die Frage nicht richtig beantworte.
VG
Yal
Anzeige
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
16.01.2021 10:19:06
Norbert
Hallo Yal,
ja genau so ist es.
Der Fehler tritt nur auf, wenn die Exceldatei über Access aufgerufen wird. Öffnet man sie direkt läuft alles einwandfrei.
Und ja, in der Exceldatei wird beim Starten eine weiter Exceldatei, in welcher sehr viele Makros und Vorlagedatenblätter sind, geöffnet.
Und im Makro kontrolliere ich ja sogar vorher ob die Exceldatei mit den Makros vorhanden ist.
Gruß Norbert
Anzeige
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
16.01.2021 13:08:36
Oberschlumpf
Hi Norbert,
kannst du uns per Upload Bsp-Dateien zeigen, die dein Problem "selbsterlebbar" machen?
1x Bsp-Accessdatei, die XL-Datei1 öffnet
1x XL-Datei1, die XL-Datei2 öffnet
1x XL-Datei2
Ciao
Thorsten
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
16.01.2021 19:30:46
Norbert
Hi Thorsten,
Vielen Dank, du hast mir jetzt indirekt geholfen.
Ich kann unmöglich die originalen Dateien hochladen, erstens sind sie viel zu groß und zweitens auch nicht für die Öffentlichkeit bestimmt :-)
Also habe ich entschieden, ein kleines Testsystem zu erstellen. Dabei habe ich nur die notwendigen Makros und Daten eingebunden. Damit war ich jetzt ein Weilchen beschäftig. Aber mehr mit dem Testen mehr als mit dem Erstellen. Denn es kann dabei zu "tollen" und für mich wirklich unerwarteten Effekten.
Ob es von Access aus funktioniert ist davon abhängig welche Konfiguration und Dateitype die Makrodatei hat.
Hat diese die Dateitype "*.xls" und ist sie auch noch als "AddIn" konfiguriert funktioniert es nicht es kommet die Fehlermeldung. Und das ist bei mir leider bisher der Fall!
Mein Problem ist somit dahingehend gelöst, dass ich jetzt weiß was die Ursache ist.
Damit kann ich jetzt entscheiden wie ich weiter vorgehe.
Die anderen Effekte beim Start von Access aus gehören nicht in diesen Thread deshalb werde ich sie nicht weiter ausführen.
Auch ein Problem mit Excel bei mehrmaligem Start der Dateien gehört nicht hierher.
Sollte jemand Interesse daran haben und selber testen wollen, bitte ein kure Email an: forum1@nnowotny.de, dann schicke ich ihm das Testpaket.
Getestet habe ich übrigens unter Windows 10 Pro 64bit Version 20H2 und Excel 2016 32bit Version.
Gruß und nochmals Danke für die Anregung
Norbert
PS: Ich markiere den Thread hiermit als beantwortet
Anzeige
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
16.01.2021 20:47:50
Oberschlumpf
Hi Norbert,
ich weiß nicht warum, aber ich hatte genau so eine Antwort von dir erwartet :-))
Ich dachte mir "Lass doch Norbert mal Testdateien zeigen. Bestimmt wird er beim Erstellen der selbigen selbst das Problem erkennen."
Und SO war es dann ja auch ;-)
Ach ja, davon, dass eine der Excel-Dateien ein AddIn darstellt, hast du vorher leider NIX erwähnt.
Ciao
Thorsten
Anzeige
AW: VBA Laufzeitfehler bei Workbooks.Open() im Zusammenhang mit Microsoft A
16.01.2021 21:43:11
Norbert
Hi Thorten,
ja manchmal braucht man einfach einen Anstoß um sich mit Details zu beschäftigen.
Das Grundstruktur des Ganzen stammt noch aus Excel 97 Zeiten und ist dann immer mehr gewachsen und ausgebaut worden.
Mir war gar nicht mehr bewusst, dass ich das als "AddIn" konfiguriert hatte, zumal es ja an der Dateiendung (.xls) nicht zu sehen ist.
Und du warst dann etwas zu schnell, ich wollte diese Infos noch nachreichen :-)
Das Problem beim Starten von Access aus besteht übrigens schon seit Jahren. Mir ist es nur mal wieder aufgefallen.
Da ich momentan ziemlich Zeit habe, dachte ich mir: "Frag doch mal einfach".
Gruß Norbert
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler bei Workbooks.Open() in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Navigiere zu "DieseArbeitsmappe" und füge den folgenden Code ein:

    Private Sub Workbook_Open()
       Dim s As String
       Dim wb As Workbook
       Dim fs As Object
       s = "xyz"    ' Dateiname wird vorbelegt
       Set fs = CreateObject("Scripting.FileSystemObject")
       If fs.fileexists(s) Then     ' Kontrolle ob Datei vorhanden
           Set wb = Workbooks.Open(s)     ' Datei öffnen
       End If
    End Sub
  3. Überprüfe, ob die Datei mit dem Namen "xyz" existiert und passe den Dateinamen bei Bedarf an.

  4. Speichere die Änderungen und schließe den VBA-Editor.

  5. Teste das Öffnen der Excel-Datei über Access und achte auf mögliche Fehlermeldungen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: "Die Methode 'Open' für das Objekt 'Workbooks' ist fehlgeschlagen."

    • Ursache: Oft tritt dieser Fehler auf, wenn du versuchst, eine Datei zu öffnen, die in einer nicht unterstützten Form vorliegt (z.B. als Add-In).
    • Lösung: Stelle sicher, dass die Datei im richtigen Format vorliegt und keine Sicherheitsbeschränkungen bestehen.
  • Zugriffsprobleme: Wenn Access die Datei nicht öffnen kann.

    • Lösung: Überprüfe die Berechtigungen der Datei und das Verzeichnis, in dem sie gespeichert ist.

Alternative Methoden

Wenn der direkte Weg über Workbooks.Open nicht funktioniert, kannst du auch folgende Methoden ausprobieren:

  1. Verwende Application.Workbooks.Open:

    Set wb = Application.Workbooks.Open(s)
  2. Nutze die Shell-Funktion:

    Shell "EXCEL.EXE """ & s & """", vbNormalFocus

Diese Methoden können helfen, den Zugriff auf die Datei zu umgehen, insbesondere wenn Sicherheitsrichtlinien im Spiel sind.


Praktische Beispiele

Hier sind einige Beispiele, wie du Workbooks.Open effizient verwenden kannst:

  • Öffnen einer Datei mit vollständigem Pfad:

    s = "C:\Pfad\zu\deiner\Datei.xlsx"
  • Öffnen und gleichzeitiges Aktivieren:

    Set wb = Workbooks.Open(s)
    wb.Activate

Diese Beispiele zeigen, wie du die workbooks.open vba Methode optimal nutzen kannst.


Tipps für Profis

  • Debugging: Verwende Debug.Print vor dem Workbooks.Open Aufruf, um den Pfad der Datei zu überprüfen.

  • Error Handling: Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler zu vermeiden:

    On Error Resume Next
    Set wb = Workbooks.Open(s)
    If Err.Number <> 0 Then
      MsgBox "Fehler beim Öffnen der Datei: " & Err.Description
      Err.Clear
    End If
  • Sicherheitseinstellungen: Überprüfe deine Excel-Sicherheitseinstellungen, falls du häufig auf Sicherheitswarnungen stößt.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Workbooks.Open und Application.Workbooks.Open?
Beide Methoden sind ähnlich, aber Application.Workbooks.Open ist spezifischer, da sie direkt auf die Excel-Anwendung verweist.

2. Warum bekomme ich einen Laufzeitfehler, wenn ich über Access öffne?
Das kann an den Sicherheitseinstellungen in Excel liegen oder daran, dass die Datei als Add-In gespeichert ist. Überprüfe die Dateiformate und die Einstellungen.

3. Wie kann ich sicherstellen, dass eine Datei existiert, bevor ich sie öffne?
Nutze die FileSystemObject-Methode, um zu überprüfen, ob die Datei vorhanden ist, bevor du den Workbooks.Open-Befehl ausführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige