Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Über Excel VBA Word Dokument befüllen

Über Excel VBA Word Dokument befüllen
17.04.2020 12:29:46
Hans
Hallo zusammen,
folgendes Problem:
Mit einem Excel VBA möchte ich in einem Word Dokument Texte einfügen.
Da ganze funktioniert mit dem folgenden Makro auch soweit, leider nur mit der Einschränkung, dass ich Texte suchen muss, welche dann ersetzt werden.
Mein Ziel wäre es bestimmte Texte unter ein vorgegebenes Kapitel zu setzen. Sprich: Ich wähle _
das Kapitel, füge den Text ein OHNE, dass beispielsweise die Überschrift des Kapitel ersetzt _ werden.

Sub WordDokumentöffnen() 'ByVal Dokumente As String
Const wdReplaceAll = 2
Const wdNoProtection = -1
Dim oAppWD As Object, oDoc As Object
Dim Trennpunkt As Long
Dim Laenge As Long
Dim Unterschied As Long
Trennpunkt = InStr(1, ActiveWorkbook.Sheets("Eingabefenster").Range("B18").Value, " ")
Laenge = Len(ActiveWorkbook.Sheets("Eingabefenster").Range("B18").Value)
Unterschied = Laenge - Trennpunkt
If Dir("Dokumente")  "" Then
Set oAppWD = CreateObject("Word.Application") 'Word als Object starten
If Not oAppWD Is Nothing Then
oAppWD.Visible = True
If oAppWD.Options.AllowReadingMode = True Then 'Word nicht im Lesemodus starten bei  _
Schreibgeschützten Dokumenten
oAppWD.Options.AllowReadingMode = False
End If
Set oDoc = oAppWD.Documents.Open("Dokument")
Application.DisplayAlerts = False
If Not oDoc Is Nothing Then
If oDoc.ProtectionType  wdNoProtection Then oDoc.Unprotect
With oDoc.Range.Find
.Text = "Auftragsnr. xxx"
.MatchCase = True
.Replacement.Highlight = True
.Replacement.Text = "Auftragsnr. " & Left(ActiveWorkbook.Sheets("Eingabefenster") _
_
_
_
.Range("B18").Value, Trennpunkt)
.Execute Replace:=wdReplaceAll
End With
With oDoc.Range.Find
.Text = "Auftrag xxx"
.MatchCase = True
.Replacement.Highlight = True
.Replacement.Text = (ActiveWorkbook.Sheets("Variablen").Range("D2").Value)
.Execute Replace:=wdReplaceAll
End With
With oDoc.Range.Find
.Text = "XXX"
.MatchCase = True
.Replacement.Highlight = True
.Replacement.Text = "Dieser Text gilt nur als Test"
.Execute Replace:=wdReplaceAll
End With
oDoc.Save         'Dokument speichern
oDoc.Close        'Dokument schließen
oAppWD.Quit       'Word schließen
End If
End If
Else
MsgBox "Die zu öffnende Dokumentdatei wurde nicht gefunden!", vbCritical, "Word-Datei öffnen" _
_
_
_
End If
Set oAppWD = Nothing
Set oDoc = Nothing
End Sub

Ich danke euch für Hilfen!!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Über Excel VBA Word Dokument befüllen
19.04.2020 13:14:25
fcs
Hallo Hans,
wenn du in deinem Wordtext in der Zeile unter den Kapitelüberschriften jeweils einen Suchtext (X_Kap_1X, X_Kap_2X, usw.) einträgst, dann kannst du dein Excel-Makro entsprechend erweitern.
Eine weitere Möglichkeit wäre im Worddocument Textmarken einzubauen und diese dann von Excel aus mit Daten zu füllen.
LG
Franz
AW: Über Excel VBA Word Dokument befüllen
20.04.2020 09:03:19
Hans
Hallo zusammen,
habe mittlerweile die Lösung gefunden.
Vielleicht hilft sie jemanden, der mal das gleiche Problem hat.
Sub WordDokumentöffnen()
Application.ScreenUpdating = False
Const wdReplaceAll = 2
Const wdNoProtection = -1
Dim oAppWD As Object, oDoc As Object
Dim x As Variant
Dim i As Variant
Dim Ueberschrift As String
If Dir("Dokumentenpfad")  "" Then
Set oAppWD = CreateObject("Word.Application") 'Word als Object starten
If Not oAppWD Is Nothing Then
oAppWD.Visible = True
If oAppWD.Options.AllowReadingMode = True Then 'Word nicht im Lesemodus starten bei  _
Schreibgeschützten Dokumenten
oAppWD.Options.AllowReadingMode = False
End If
Set oDoc = oAppWD.Documents.Open("Dokumentenpfad")
Application.DisplayAlerts = False
If Not oDoc Is Nothing Then
If oDoc.ProtectionType  wdNoProtection Then oDoc.Unprotect
x = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To x
With oAppWD.Selection.Find
.Forward = True
.ClearFormatting
.Style = ActiveWorkbook.Sheets("Worddokumente").Cells(i, 1).Value
.MatchWholeWord = True
.MatchCase = False
.Wrap = wdfindContinue
.Execute FindText:=ActiveWorkbook.Sheets("Worddokumente").Cells(i, 2).Value
End With
oAppWD.Selection.InsertParagraphAfter
oAppWD.Selection.InsertParagraphAfter
oAppWD.Selection.InsertAfter Text:=ActiveWorkbook.Sheets("Worddokumente").Cells(i, 3).  _
_
Value
Next
oDoc.Save         'Dokument speichern
oDoc.Close        'Dokument schließen
oAppWD.Quit       'Word schließen
End If
End If
Else
MsgBox "Die zu öffnende Dokumentdatei wurde nicht gefunden!", vbCritical, "Word-Datei öffnen" _
_
End If
Set oAppWD = Nothing
Set oDoc = Nothing
End Sub

Anzeige
AW: Über Excel VBA Word Dokument befüllen
20.04.2020 09:04:03
Hans
Danke dir Franz!

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige