Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Laufzeitfehler 4605

Laufzeitfehler 4605
{Boris}
Hi Leute,
ich bekomm den Laufzeitfehler 4605
Diese Methode oder Eigenschaft ist nicht verfügbar, weil kein Dokumentfenster aktiv ist
in der markierten Zeile
Dim objWD As Object
Dim strMyDoc As String
strMyDoc = Application.GetOpenFilename("Word Dateien (*.doc),*.doc")
If strMyDoc = "Falsch" Then Exit Sub
Set objWD = GetObject(strMyDoc)
With objWD
.Range.Copy
.Close False '
Auf der Microsoftseite heißt es dazu:
Dieses Problem kann auftreten, wenn Sie kein Dokument geöffnet haben, oder wenn das angegebene  _
Dokument nicht geöffnet ist. Word kann nur die Eigenschaften eines geöffneten (oder sichtbaren) Dokuments ändern.
Hinweis: Diese Fehlermeldungen können auch auftreten, wenn Sie das Dokument öffnen, wobei die Eigenschaft Sichtbar auf Falsch gesetzt ist.
Mit On Error kann ich die Meldung zwar wegbügeln - aber das muss doch auch anders gehen? Mit dem Word-Objektmodell bin ich leider gar nicht vertraut.
Danke vorab und
Grüße Boris
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler 4605
14.09.2009 17:01:10
JogyB
Hi.
Hmm... bei mir läuft das unter Office 2003 problemlos durch.
Setz mal noch ein objWD.Parent.Visible = True vor den Schliessen-Befehl.
Gruss, Jogy
Das gibt nene Laufzeitfehler 5863
14.09.2009 17:11:26
{Boris}
Hi Jogy,
Visible ist keine Methode
Habe jetzt aber gemerkt, dass der Ursprungscode problemlos läuft, wenn bereits eine Wordinstanz geöffnet ist. Aber das muss ja nun nicht immer zwangsläufig der Fall sein, daher bleibt die Frage, wie es anders geht (zumindest in meiner hiesigen 2000er-Version).
Danke Dir schon mal und
Grüße Boris
Anzeige
Mea Culpa...
14.09.2009 17:20:22
{Boris}
Hi,
es gibt natürlich keinen Laufzeitfehler, wenn man es richtig schreibt... :-(
Allerdings hab ich dann ne Wordinstanz offen - bekommt man die auch noch weg?
Grüße Boris
AW: Mea Culpa...
14.09.2009 17:36:20
JogyB
Hi.
Versuch es mal so:
Sub test()
Dim objWD As Object
Dim appWD As Object
Dim strMyDoc As String
strMyDoc = Application.GetOpenFilename("Word Dateien (*.doc),*.doc")
If strMyDoc = "Falsch" Then Exit Sub
On Error Resume Next
' Gibt einen Fehler, wenn Word noch nicht offen
' Ist dann noch Nothing
Set appWD = GetObject(, "Word.Application")
On Error GoTo 0
Set objWD = GetObject(strMyDoc)
If appWD Is Nothing Then
' Wenn es Nothing ist, dann war Word noch nicht offen,
' dann muss man die Application zuweisen, damit sie geschlossen
' werden kann
Set appWD = objWD.Parent
Else
' Wenn Word schon offen war, dann ist appWD nicht Nothing
' Setze es in dem Fall auf Nothing, da es nicht geschlossen werden soll
Set appWD = Nothing
End If
With objWD
.Range.Copy
.Parent.Visible = True
.Close False '

Unter 2003 geht es so. Allerdings ist der Objektzugriff da etwas seltsam, da das Verhalten der einzelnen Office-Applikationen bei 2003 in manchen Bereichen unterschiedlich ist. Da kann es durchaus sein, dass sich 2000 wieder anders verhält.
Gruss, Jogy
Anzeige
Dann würde ich es aber...
14.09.2009 17:40:57
{Boris}
Hi Jogy,
...doch eher "quick and dirty" auf diese Weise machen:
Dim objWD As Object
Dim strMyDoc As String
strMyDoc = Application.GetOpenFilename("Word Dateien (*.doc),*.doc")
If strMyDoc = "Falsch" Then Exit Sub
Set objWD = GetObject(strMyDoc)
With objWD
.Range.Copy
On Error Resume Next
.Close False
On Error GoTo 0
End With

Das läuft einwandfrei.
Aber ich check das wie gesagt heute Abend mal unter xl2007 - und melde mich später wieder.
Grüße Boris
Anzeige
AW: Dann würde ich es aber...
14.09.2009 17:43:08
JogyB
Hi.
Ist dann Word auch wirklich zu? Oder nur nicht angezeigt? Würde ich mal im Taskmanager prüfen. Vermutlich ist dann sogar das Dokument noch offen.
Gruss, Jogy
AW: Das gibt nene Laufzeitfehler 5863
14.09.2009 17:24:18
JogyB
Hi.
Sorry, kann es nicht nachvollziehen, da es bei mir mit Office 2003 problemlos geht... aber mal zur Sicherheit: Wird das überhaupt korrekt geöffnet, d.h. ist ein Objekt da? Vermutlich ja, denn sonst würde der Fehler früher auftreten, aber man weiss ja nie.
Ich würde an Deiner Stelle mal noch die Microsoft Office Word Object Library (2000 müßte 9.0 sein) als Verweis aufnehmen, dann kannst Du das objWD als Word.Document deklarieren und siehst gleich, welche Methoden und Eigenschaften zur Verfügung stehen.
Gruss, Jogy
Anzeige
AW: Das gibt nene Laufzeitfehler 5863
14.09.2009 17:26:23
{Boris}
Hi Jogy,
das mit dem anderen Laufzeitfehler hatte sich ja erledigt.
Ich check das mal auf meinem Rechner unter xl2007 - mal sehen, was da raus kommt.
Melde mich daher wohl erst heute Abend oder morgen wieder!
Danke bisweilen und
Grüße Boris
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 4605 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 4605 in Excel VBA zu beheben, folge diesen Schritten:

  1. Word-Dokument öffnen: Stelle sicher, dass das Word-Dokument, mit dem du arbeiten möchtest, geöffnet ist.

  2. Überprüfe den Sichtbarkeitsstatus: Wenn du versuchst, auf ein Word-Dokument zuzugreifen, das nicht sichtbar ist, kann der Fehler error 4605 auftreten. Füge den folgenden Code hinzu, um das Dokument sichtbar zu machen:

    objWD.Parent.Visible = True
  3. Fehlerbehandlung implementieren: Verwende On Error Resume Next, um Fehler zu ignorieren, jedoch ist es besser, die Fehlerursache zu beheben.

  4. Code ausführen: Teste den Code, um sicherzustellen, dass der Fehler nicht mehr auftritt.

Hier ein Beispielcode, der die oben genannten Punkte berücksichtigt:

Sub OpenWordDocument()
    Dim objWD As Object
    Dim strMyDoc As String
    strMyDoc = Application.GetOpenFilename("Word Dateien (*.doc),*.doc")
    If strMyDoc = "Falsch" Then Exit Sub

    On Error Resume Next
    Set objWD = GetObject(strMyDoc)
    On Error GoTo 0

    If Not objWD Is Nothing Then
        objWD.Parent.Visible = True
        ' Deine weiteren Aktionen hier
        objWD.Close False
    Else
        MsgBox "Dokument konnte nicht geöffnet werden."
    End If
End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 4605: Dieser Fehler tritt auf, wenn kein aktives Dokumentfenster vorhanden ist. Stelle sicher, dass das Dokument geöffnet und sichtbar ist.
  • Error 5863: Dieser Fehler kann auftreten, wenn das Dokument nicht geöffnet ist. Überprüfe den Dateipfad und die Dateitypen.

Um diese Fehler zu vermeiden, setze sicher, dass du die Microsoft Office Word Object Library als Verweis in deinem Excel-Projekt hinzugefügt hast.


Alternative Methoden

  1. Verwendung von CreateObject: Anstelle von GetObject kannst du CreateObject verwenden, um eine neue Instanz von Word zu erstellen:

    Dim objWD As Object
    Set objWD = CreateObject("Word.Application")
  2. Direkte Verwendung von Excel: Wenn du keine Word-Dokumente benötigst, kannst du die Daten auch direkt in Excel verarbeiten, um den runtime error 4605 zu umgehen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du ein Word-Dokument öffnen und den Inhalt kopieren kannst:

Sub CopyFromWord()
    Dim objWD As Object
    Dim strMyDoc As String
    strMyDoc = Application.GetOpenFilename("Word Dateien (*.doc),*.doc")
    If strMyDoc = "Falsch" Then Exit Sub

    Set objWD = CreateObject("Word.Application")
    objWD.Visible = True
    objWD.Documents.Open strMyDoc
    objWD.ActiveDocument.Content.Copy
    objWD.Quit
End Sub

Tipps für Profis

  • Verwende Late Binding: Dies ermöglicht dir, Kompatibilität mit verschiedenen Versionen von Word und Excel herzustellen, ohne spezifische Versionen anzugeben.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um herauszufinden, wo und warum der laufzeitfehler 4605 auftritt.

  • Regelmäßige Updates: Halte deine Office-Anwendungen auf dem neuesten Stand, um bekannte Fehler zu vermeiden.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 4605?
Der Laufzeitfehler 4605 tritt auf, wenn in VBA versucht wird, auf ein Word-Dokument zuzugreifen, das nicht geöffnet oder nicht sichtbar ist.

2. Wie kann ich den Fehler vermeiden?
Stelle sicher, dass das Dokument geöffnet und sichtbar ist, bevor du versuchst, darauf zuzugreifen. Implementiere auch eine Fehlerbehandlung, um unerwartete Fehler zu vermeiden.

3. Ist dieser Fehler versionsabhängig?
Ja, der Fehler kann je nach Version von Excel und Word unterschiedlich auftreten. Es ist ratsam, die Microsoft Office Word Object Library zu verwenden, um die Kompatibilität zu gewährleisten.

4. Was soll ich tun, wenn mein Code weiterhin nicht funktioniert?
Überprüfe den Code auf Syntaxfehler und vergewissere dich, dass die Word-Instanz korrekt gestartet wurde. Debugge den Code schrittweise, um den Fehler zu lokalisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige