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

Forumthread: Word Dokument über Excel VBA speichern

Word Dokument über Excel VBA speichern
18.04.2019 07:46:42
Marcel
Guten Morgen,
vielleicht könnt ihr mir ja weiterhelfen.
Ich habe mir eine Art kleine Datenbank über Excel erstellt, die soweit auch super funktioniert nur hapert es daran bestimmte Einträge die ich in einer Listbox makiere(per Doppelklick), welche dann in Textboxen übernommen werden, in ein Word Dokument zu übernehmen und dann zu speichern.
Hier mal mein Problem und dafür hier mal meine Programmierung bisher:
1. Über ein Button wird ein Ordner erstellt der mit bestimmten Werten der Textboxinhalte _ angelegt wird.

Private Sub cb_Ordner_Click()
Dim Dateiname As String
If ListBox1.ListIndex > -1 Then
Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
If Dir(ThisWorkbook.path & "\" & Dateiname, vbDirectory) = "" Then
MkDir ThisWorkbook.path & "\" & Dateiname
MsgBox "Sie haben den Ordner: " & Dateiname & " erstellt!"
Else
MsgBox "Dieser Ordner existiert bereits!"
End If
Else
MsgBox "Wählen Sie ein Datensatz aus!"
End If
End Sub

2. Nun würde ich gern diesen makierten Bereich aus der Listbox in ein Word Dokument speichern wollen(über einen Button)
- Dafür habe ich ein Dokument welches bereists vorgeschrieben ist.
- Nutze dafür Textfelder Formularsteuerelemente(obwohl mich das graue Kästchenstört ;-))
Es klappt soweit das er den Wert der Textbox übernimmt und in das Word Dokument schreibt aber _ dabei wird das Word Dokument schreibgeschützt. Das sollte irgendwie nicht sein und dazu muss ich es erst öffnen.

Private Sub cb_PAdd_Click1()
Dim PathFile As String
Dim objWDApp As Object
Dim objWDDoc As Object
PathFile = ThisWorkbook.path & Application.PathSeparator & _
"Test1.docx"
Set objWDApp = OffApp("Word", True)
If Not objWDApp Is Nothing Then
Set objWDDoc = objWDApp.Documents.Open(PathFile, ReadOnly:=True)
With objWDDoc
.FormFields("Text1").Result = TextBox1.Value
End With
End If
objWDApp.Visible = True

Frage dazu:
Wie bekomme ich es hin das aus der Vorgefertigten Word Datei sich die Felder füllen, dabei das Dokument nicht Schreibgeschützt ist und es sich ohne vorher zu öffnen in dem Ordner(der vorher angelegt wurde), abzuspeichern? Dazu soll die Neue Worddatei einen bestimmten Namen der Textfelder haben(also Speichern unter:)... wie beim Anlegen der Ordner.
Ich freu mich auf eure Hilfe
Lieben Dank Marcel
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW:ReadOnly
18.04.2019 08:32:08
Fennek
Hallo,
wenn man eine Datei so öffnet:

Open(PathFile, ReadOnly:=True)
darf man sich über "ReadOnly" nicht wundern.
Es hilft, die Befehle zum Speichern zuerst in Word auszuprobieren ("doc.SaveAs2 Pfad&Name") und dann den Code in den XL-Code zu übernehmen.
mfg
Anzeige
AW: AW:ReadOnly
18.04.2019 08:57:39
Marcel
Hallo Fennek,
ja manchmal sieht man den Wald vor lauter Bäumen nicht.
Ich schaue gleich mal nach.
Gruß
Marcel
AW: AW:ReadOnly
18.04.2019 09:25:13
Marcel
Jetzt passt das mit dem Schreibgeschützten Dokument ;-)
Wie speichere ich denn das jetzt offene Dokument(Word) in einem anderen Ordner ab, ohne die Grunddatei zu überschreiben?
Gruß
Marcel
Anzeige
AW: AW:ReadOnly
18.04.2019 09:33:26
Nepumuk
Hallo Marcel,
das hat dir doch Fennek schon geschrieben:
DeinDoc.SaveAs2 FileName:="DeinPfad", FileFormat:=wdFormatXMLDocument
Gruß
Nepumuk
AW: AW:ReadOnly
18.04.2019 09:35:52
Marcel
Oh ok, vielen Dank
Gruß
AW: AW:ReadOnly
18.04.2019 11:31:57
Marcel
Vielen Dank euch.
Ich habe das jetzt so umgesetzt.
Private Sub cb_PAdd_Click()
Dim PathFile As String
Dim objWDApp As Object
Dim objWDDoc As Object
Dim Pfad As String
Dim Dateiname As String
PathFile = ThisWorkbook.path & Application.PathSeparator & _
"Test1.docx"
Set objWDApp = OffApp("Word", True)
If Not objWDApp Is Nothing Then
Set objWDDoc = objWDApp.documents.Open(PathFile, True)
Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
If Dir(ThisWorkbook.path & "\" & Dateiname, vbDirectory) = "" Then
MkDir ThisWorkbook.path & "\" & Dateiname
MsgBox "Es wurde ein Ordner für die ID: " & TextBox2 & " erstellt!"
Pfad = ActiveWorkbook.path & "\" & Dateiname & "\"
Else
Pfad = ActiveWorkbook.path & "\" & Dateiname & "\"
End If
With objWDDoc
If ListBox1.ListIndex > -1 Then
.FormFields("Text1").Result = TextBox1.Value
.SaveAs filename:=Pfad & Dateiname & "_PreAdd", FileFormat:= _
wdFormatXMLDocument
.Close True
End If
End With
End If
objWDApp.Visible = False
MsgBox "Das Dokument wurde im Ordner: " & ThisWorkbook.path & "\" & Dateiname & "  _
gespeichert!"
End Sub

Jetzt nur noch alle Fields einfügen dann sieht das gut aus.
Gruß
Marcel
Anzeige
AW: AW:ReadOnly
18.04.2019 09:30:10
Marcel
Jetzt passt das mit dem Schreibgeschützten Dokument ;-)
Wie speichere ich denn das jetzt offene Dokument(Word) in einem anderen Ordner ab, ohne die Grunddatei zu überschreiben?
Gruß
Marcel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Word Dokument über Excel VBA speichern


Schritt-für-Schritt-Anleitung

  1. Ordner erstellen: Du kannst über einen Button einen Ordner anlegen, der bestimmte Werte aus den Textboxen verwendet. Hier ist der VBA-Code dafür:

    Private Sub cb_Ordner_Click()
        Dim Dateiname As String
        If ListBox1.ListIndex > -1 Then
            Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
            If Dir(ThisWorkbook.path & "\" & Dateiname, vbDirectory) = "" Then
                MkDir ThisWorkbook.path & "\" & Dateiname
                MsgBox "Sie haben den Ordner: " & Dateiname & " erstellt!"
            Else
                MsgBox "Dieser Ordner existiert bereits!"
            End If
        Else
            MsgBox "Wählen Sie ein Datensatz aus!"
        End If
    End Sub
  2. Word Dokument öffnen und Daten einfügen: Um Daten aus Excel in ein Word-Dokument einzufügen, kannst du den folgenden Code verwenden:

    Private Sub cb_PAdd_Click()
        Dim PathFile As String
        Dim objWDApp As Object
        Dim objWDDoc As Object
        PathFile = ThisWorkbook.path & Application.PathSeparator & "Test1.docx"
        Set objWDApp = OffApp("Word", True)
        If Not objWDApp Is Nothing Then
            Set objWDDoc = objWDApp.Documents.Open(PathFile, ReadOnly:=True)
            With objWDDoc
                .FormFields("Text1").Result = TextBox1.Value
            End With
            objWDApp.Visible = True
        End If
    End Sub
  3. Dokument speichern: Um das Word-Dokument zu speichern, ohne die Grunddatei zu überschreiben, benutze den SaveAs2 Befehl:

    With objWDDoc
        .SaveAs2 FileName:="DeinPfad\DeinDateiname.docx", FileFormat:=wdFormatXMLDocument
        .Close True
    End With

Häufige Fehler und Lösungen

  • Das Dokument ist schreibgeschützt: Achte darauf, dass du das Dokument nicht im ReadOnly-Modus öffnest. Verwende Set objWDDoc = objWDApp.Documents.Open(PathFile, False) (setze False anstelle von True).

  • Fehlermeldung beim Speichern: Wenn du eine Fehlermeldung beim Speichern erhältst, prüfe den angegebenen Dateipfad und den Dateinamen. Stelle sicher, dass der Pfad existiert und du die notwendigen Berechtigungen hast.


Alternative Methoden

Anstelle von VBA kannst du auch die Mail Merge-Funktion von Word verwenden, um Daten aus Excel in ein Word-Dokument zu übertragen. Diese Methode funktioniert besonders gut, wenn du viele Daten in Word einfügen möchtest.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, wie du ein Excel VBA-Skript erstellen kannst, um ein Word-Dokument zu erstellen, die Daten einzufügen und es zu speichern:

Private Sub cb_PAdd_Click()
    Dim PathFile As String
    Dim objWDApp As Object
    Dim objWDDoc As Object
    Dim Pfad As String
    Dim Dateiname As String
    PathFile = ThisWorkbook.path & Application.PathSeparator & "Test1.docx"
    Set objWDApp = OffApp("Word", True)
    If Not objWDApp Is Nothing Then
        Set objWDDoc = objWDApp.Documents.Open(PathFile, False)
        Dateiname = TextBox2 & "_" & TextBox3 & "_" & TextBox4
        Pfad = ThisWorkbook.path & "\" & Dateiname & "\"
        MkDir Pfad
        With objWDDoc
            .FormFields("Text1").Result = TextBox1.Value
            .SaveAs2 FileName:=Pfad & Dateiname & "_PreAdd.docx", FileFormat:=wdFormatXMLDocument
            .Close True
        End With
    End If
    objWDApp.Visible = False
    MsgBox "Das Dokument wurde im Ordner: " & Pfad & " gespeichert!"
End Sub

Tipps für Profis

  • Nutze die Excel-Daten in Word einfügen VBA-Technik für effektive Automatisierung.
  • Experimentiere mit verschiedenen FileFormat-Optionen in SaveAs2, um das gewünschte Dateiformat zu erhalten.
  • Halte Deine VBA-Projekte organisiert, indem Du häufig verwendete Funktionen in Module auslagerst.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel VBA Word Dokument erstellen?
Verwende die oben genannten Schritte, um ein Word-Dokument aus Excel zu generieren und Daten einzufügen.

2. Was ist der Unterschied zwischen SaveAs und SaveAs2?
SaveAs2 bietet zusätzliche Dateiformatoptionen und ist die empfohlene Methode zum Speichern in neueren Word-Versionen.

3. Wie kann ich ein offenes Dokument speichern, ohne die Grunddatei zu überschreiben?
Verwende den SaveAs2-Befehl mit einem neuen Dateinamen und einem anderen Pfad, um die Grunddatei nicht zu überschreiben.

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