Word Dokument direkt öffnen


josef24

Erfahrenes Mitglied
Guten Tag. Komme nochmal mit einer Frage und bitte um Unterstützung. Ich möchte, dass nachdem das Ergebnis aus EXCEL fertig ist, und es nach Word eingefügt wurde, das sich dann das Ergebnis gleich (Word-Dokument)öffnet.
Verwende folgenden Kode der aber einen Fehler bringt: Laufzeitfehler 1004, ( C:\Document1.docx) Dokument wurde nicht gefunden.
Ich möchte erreichen, dass einfach ein Word-Dokument geöffnet wird, ohne es groß zu beziffern. In dem Falle braucht es keinen Pfad, sondern nur öffnen, ausdrucken und wieder schließen. Hintergrund: Es wird nur ausgedruckt und sogleich wieder gelöscht. Danke und Gruß Josef
Mein Kode zurzeit:
Code:
Workbooks.Open ("C:\Document1.docx")
 

ikosaeder

Teekannen-Agnostiker
Mit folgendem Code kann ich in meiner Excelversion ein Worddoc öffnen:
Code:
Sub OpenWord()
Dim objDoc
Dim objWord As Object

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("C:\Document1.docx")
End Sub
 

josef24

Erfahrenes Mitglied
Erstmal Danke für die Unterstützung. Also, ich möchte das Word-Dokument nur öffnen, und ansehen. Ob ich es dann ausdrucken will entscheide ich danach. Das Word-Dokument öffnet sich ja korrekt, zeitgleich erscheint der Hinweis im VBA-Kode. Dann öffnet sich der Fehler-Kode: Laufzeitfehler 1004, (C: \Document1.docx) Dokument wurde nicht gefunden. Und es geht nichts mehr voran. Der Abschluss vom Vorgang fehlt irgendwie.
 

ikosaeder

Teekannen-Agnostiker
Ich denke, das Workbooks.open eine Funktion ist um Workbooks, also Excel Dateien zu öffnen. Hast du meinen Code mal probiert?
 

josef24

Erfahrenes Mitglied
Hier mal mein kompletter Versuch die EXCEL Tabelle in ein Word-Dokument einzupflegen und dann als Word direkt zu öffnen. Diese funktioniert auch.
Einzig kommt jetzt ein Fehler im VBA Kode "Laufzeitfehler 5471, diese Datei wurde nicht gefunden.("C:\Windows\System32\Document1.docx")

Code:
Private Sub CommandButton9_Click()  ' Vorbereitung für Statiatik
Dim appWord As Object, wordDoku As Object, wordbereich As Object, Gruppe As String
Dim pfad As String
Dim Bereich As Range
Dim Jahr  '         Dim datum1 '  As Date
Jahr = Year(Now)
Set Bereich = ThisWorkbook.Worksheets("Tab_Stat").Cells(1, 1).CurrentRegion
Set appWord = CreateObject("Word.Application")
appWord.Visible = True
Set wordDoku = appWord.Documents.Add
Set wordbereich = wordDoku.Paragraphs.last.Range
Bereich.Copy
    With wordDoku
        .Content.Font.Size = 15  'noch leeres Dokument formatieren 'Texte reinschreiben lassen
        .Content.InsertAfter "Statistik für das Jahr:  " & Jahr & vbLf
    'die kopierte gefilterte Tabelle einfügen
    .Paragraphs(2).Range.Font.Size = 15
    'und weiter im Text
     Set wordbereich = wordDoku.Paragraphs.last.Range
        wordbereich.Paste 'und weiter im Text
    .Content.InsertAfter vbCr & "Daten sind aus der letztmöglichen Erhebung im aktuellen Kalenderjahr"
End With
wordbereich.Style = "kein leerraum"
wordDoku.PageSetup.Orientation = 1 ' 1 = Querform
'gesetzten Filter entfernen ' bereich.AutoFilter
appWord.Application.Activate
    Set appWord = Nothing
    Set Bereich = Nothing
    Set wordbereich = Nothing
    Set wordDoku = Nothing
    
    Dim objDoc
Dim objWord As Object

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("Document1.docx")
With objWord
' .activedocument.bookmarks("Document1.docx").Range.Text = inhalt
' .Documents.Open Filename:=("Document.docx")
' .Visible = True
' .Activate
 End With
End Sub
 

Zvoni

Erfahrenes Mitglied
Wieso sollte es denn auch existieren? Nur weil du es im ersten Teil der Prozedur mit
Set wordDoku=AppWord.Documents.Add erzeugt hast?
Du musst es dann auch erstmal speichern....
 

josef24

Erfahrenes Mitglied
Habe jetzt Laufzeitfehler 91, "Objektvariable oder With-Blockvariable nicht festgelegt". Wo und wie muß ich da noch eingreifen? Danke bis dahin jedenfalls.
 

Zvoni

Erfahrenes Mitglied
Hast du dein Speichern nach diesem Teil?
Set appWord = Nothing
Set Bereich = Nothing
Set wordbereich = Nothing
Set wordDoku = Nothing

Dein Speichern-Aufruf muss direkt davor rein. Also WordDoku.Save blablabla

Übrigens: Wenn du schon die Objekte zerstörst, solltest du sie auch in umgekehrter Reihenfolge zur Geburt zerstören.
Du zerstörst die Word-App als erstes, und das Dokument als letztes. Die App wird als letztes zerstört!
 

josef24

Erfahrenes Mitglied
Danke, ist schon, aber der Fehlertext kommt vor wie nach. wie von mir in (#11) dargestellt.

Laufzeitfehler 91, "Objektvariable oder With-Blockvariable nicht festgelegt"

Wie muss ich die Variablen festlegen? Gruß Josef
 

Zvoni

Erfahrenes Mitglied
Dazu müsste ich deine ganze Routine sehen. Irgendwo verwendest du eine Objektvariable die nicht mehr gültig ist.
 

josef24

Erfahrenes Mitglied
Guten Morgen den Spezialisten. Habe mal den relevanten Code-Text hierhin kopiert. War mir im Post#7 noch nicht klar, dass ein Speichern dem vorangehen muss. Habe wie man sieht mehreres versucht, leider ohne Erfolg. Gruß Josef
Wenn ich so starte kommt zuerst der Hinweis: Datei bereits vorhanden. Danach "Laufzeitfehler 424, Objekt erforderlich."
Code:
End With
 wordbereich.Style = "Kein Leerraum"  ' Hiermit die Textformatierung "Kein Leerraum" bestimmen.
 wordDoku.PageSetup.Orientation = 0 ' Ausgabe des Worddokuments im Querformat
Bereich.AutoFilter
appWord.Application.Activate
SaveAs "C:\Users\Besitzer\Desktop\Dokument1.docx"
    Set appWord = Nothing
    Set Bereich = Nothing
    Set wordbereich = Nothing
    Set wordDoku = Nothing
'         wsTarget.Select
' Workbooks.Open ("Document1.docx")
 Documents.Open Filename:=("C:\Users\Besitzer\Desktop\Dokument1.docx"), ReadOnly:=True
'   Dim objDoc
'   Dim objWord As Object
'   Set wordDoku = CreateObject("Word.Application")
'   Set objDoc = wordDoku.Documents.Open("Document1.docx")
'   With wordDoku
' .activedocument.bookmarks("Document1.docx").Range.Text = inhalt
' .Documents.Open Filename:=("Document.docx")
' .Visible = True
' .Activate
'    End With
' objWord.Application.Quit
' Set objWord = Nothing
End Sub
 

Zvoni

Erfahrenes Mitglied
Mach ich zwar selten, aber ich bin mir sicher es muss irgendwie
"wordDoku.SaveAs" heissen.
Desweiteren hat die SaveAs-Methode sicher ein Flag, die es erlaubt, ein bereits bestehendes Dokument ohne Rückfrage/Fehlermeldung zu überschreiben.
 

josef24

Erfahrenes Mitglied
Habe es probiert und passt, aber:

Code:
wordDoku.SaveAs Filename:=("C:\Users\Besitzer\Desktop\Dokument1.docx")
Laufzeitfehler 91, Objekt. oder With-Varible nicht festgelegt.
Kann dies hier die Lösung gewesen sein?
Code:
Dim wordDoku As Object
Kann es das gewesen sein??
Oder diese Zeile ausschalten?
Code:
 Set wordDoku = Nothing
Geht noch ein ja oder nein?
Gruß Josef
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
Hmm, kann sein, dass es ein der späten Bindung liegt. Auf den ersten Blick kann ich nicht wirklich was erkennen.
Kannst du mal die Objekte mit konkreten Klassen erstellen?
also
Dim appWord As Word-Application (oder wie auch immer das heisst)
Dim wordDoku As Document (oder wie auch immer es heisst)

Ansonsten mal ein frisches Projekt starten, in welchem du nur die Word-Application erstellst, ein Word-Document erstellst, und dann direkt das Document speicherst