Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

VBA Excel to Word Bookmarks

VBA Excel to Word Bookmarks
06.12.2019 11:01:25
Dome
Hallo Leute,
Ich benötige Eure Hilfe zum folgenden Code:

Private Sub CommandButton1_Click()
'vba_xlsm-to-dotx-bookmarks_test_DE.dotx
'vba_xlsm-to-dotx-bookmarks_test_FR.dotx
'vba_xlsm-to-dotx-bookmarks_test_IT.dotx
Dim z&, TM$ ' & = as long, $ = as String
Dim wdApp As Object
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then Set wdApp = CreateObject("Word.Application")
On Error GoTo 0
wdApp.Visible = True
wdApp.Documents.Add "...\vba_xlsm-to-dotx-bookmarks_test_DE.dotx"
For z = 2 To 7
' Textmarke wird nur dann aus Spalte E übernommen, wenn nicht leer
' und dann so lange verwendet, bis die nächste vorhanden ist.
If Tabelle12.Range("E" & z).Value  "" Then TM = Tabelle12.Range("E" & z).Value
If Tabelle12.Range("G" & z).Value = "x" Then
If TM  "" Then
Tabelle12.Range("K" & z).Copy
wdApp.ActiveDocument.Bookmarks(TM).Range.PasteExcelTable False, False, False
Else
MsgBox "Textmarke = leer; Fehler in Zeile " & z
End If
End If
Next
Set wdApp = Nothing
End Sub
Meine Frage lautet nun:
Wie bekomme ich es hin, dass mir drei DOTX-Vorlagen geöffnet werden (heute wird nur die DE-Vorlage geöffnet) und mir bei jeweils derselben Textmarke der Text in DE, FR und IT eingefügt wird?
Die Texte in FR und IT befinden sich dabei in den Spalten L und M.
Besten Dank für Eure Inputs.
https://www.herber.de/bbs/user/133640.xlsm
LG
Dome

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel to Word Bookmarks
06.12.2019 11:28:22
ede
Hallo,
dann ruf doch den relevanten Teil einfach dreimal auf innerhalb deiner Procedure:

Private Sub CommandButton1_Click()
'vba_xlsm-to-dotx-bookmarks_test_DE.dotx
'vba_xlsm-to-dotx-bookmarks_test_FR.dotx
'vba_xlsm-to-dotx-bookmarks_test_IT.dotx
Dim z&, TM$ ' & = as long, $ = as String
Dim wdApp As Object
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then Set wdApp = CreateObject("Word.Application")
On Error GoTo 0
'----------------------------für DE
wdApp.Visible = True
wdApp.Documents.Add "...\vba_xlsm-to-dotx-bookmarks_test_DE.dotx"
For z = 2 To 7
' Textmarke wird nur dann aus Spalte E übernommen, wenn nicht leer
' und dann so lange verwendet, bis die nächste vorhanden ist.
If Tabelle12.Range("E" & z).Value  "" Then TM = Tabelle12.Range("E" & z).Value
If Tabelle12.Range("G" & z).Value = "x" Then
If TM  "" Then
Tabelle12.Range("K" & z).Copy
wdApp.ActiveDocument.Bookmarks(TM).Range.PasteExcelTable False, False, False
Else
MsgBox "Textmarke = leer; Fehler in Zeile " & z
End If
End If
Next
wdApp.ActiveDocument.Close savechanges:=True    'Dokument schliessen
'----------------------------für FR
wdApp.Visible = True
wdApp.Documents.Add "...\vba_xlsm-to-dotx-bookmarks_test_FR.dotx"
For z = 2 To 7
' Textmarke wird nur dann aus Spalte E übernommen, wenn nicht leer
' und dann so lange verwendet, bis die nächste vorhanden ist.
If Tabelle12.Range("E" & z).Value  "" Then TM = Tabelle12.Range("E" & z).Value
If Tabelle12.Range("G" & z).Value = "x" Then
If TM  "" Then
Tabelle12.Range("L" & z).Copy
wdApp.ActiveDocument.Bookmarks(TM).Range.PasteExcelTable False, False, False
Else
MsgBox "Textmarke = leer; Fehler in Zeile " & z
End If
End If
Next
wdApp.ActiveDocument.Close savechanges:=True    'Dokument schliessen
'----------------------------für IT
' hier selber einfügen.....
Set wdApp = Nothing
End Sub
ist zwar nicht elegant, aber sollte funktionieren.
Gruss
ede
Anzeige
AW: VBA Excel to Word Bookmarks
06.12.2019 11:33:13
Dome
Hallo ede,
Danke für Deinen INput. Ich war gerade am schreiben einer Ergänzung, dass ich es mittlerweile gelöst habe, und zwar genau so wie Du es vorgeschlagen hast. ;)
Gibt es keinen Weg, der etwas sexier ist?
LG
Dominik
AW: VBA Excel to Word Bookmarks
06.12.2019 11:40:51
ede
Danke für die Rückmneldung,
Natürlich gibt es eine elegantere Variante. Den relevanten Code packt man in eine eigene SUB() mit Parameterübergabe (z.B.: für dotx-Vorlage und Spaltenindex) und ruft diese dann dreimal auf.
Schönes 2. Adventswochenende
gruss
ede
AW: VBA Excel to Word Bookmarks
06.12.2019 14:02:29
Dome
Na dann klemm' ich mich mal dahinter. ;)
Danke für den Tipp.
LG
Dome
Anzeige
Gelöst
06.12.2019 15:10:03
Dome
Habs hinbekommen...
In ein Modul kopieren:

Sub test(Sprache As String, Spalte As String)
Dim z&, TM$ ' & = as long, $ = as String
Dim wdApp As Object
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then Set wdApp = CreateObject("Word.Application")
On Error GoTo 0
wdApp.Visible = True
wdApp.Documents.Add "...\vba_xlsm-to-dotx-bookmarks_test_" & Sprache & ".dotx"
For z = 2 To 7
' Textmarke wird nur dann aus Spalte E übernommen, wenn nicht leer
' und dann so lange verwendet, bis die nächste vorhanden ist.
If Tabelle12.Range("E" & z).Value  "" Then TM = Tabelle12.Range("E" & z).Value
If Tabelle12.Range("G" & z).Value = "x" Then
If TM  "" Then
Tabelle12.Range(Spalte & z).Copy
wdApp.ActiveDocument.Bookmarks(TM).Range.PasteExcelTable False, False, False
Else
MsgBox "Textmarke = leer; Fehler in Zeile " & z
End If
End If
Next
Set wdApp = Nothing
End Sub
In Mappe kopieren:

Private Sub CommandButton1_Click()
'Dim Produkt As String
Dim Sprache As String
Dim Spalte As String
'Produkt = "Tabelle12"
Sprache = "DE"
Spalte = "K"
Call test(Sprache, Spalte)
'Produkt = "Tabelle13"
Sprache = "FR"
Spalte = "L"
Call test(Sprache, Spalte)
'Produkt = "Tabelle14"
Sprache = "IT"
Spalte = "M"
Call test(Sprache, Spalte)
End Sub
Vielen Dank für die Hilfe.
LG
Dome
Anzeige
AW: Gelöst
09.12.2019 11:12:44
Dome
Hallo Leute,
Der Code bricht mir beim Erstellen immer an derselben Stelle (innerhalb des Codes, siehe unten) ab, dabei aber immer bei unterschiedlichen Textmarken in unterschiedlichen Dokumenten:
Beispiel: Bei einem Durchlauf bricht er im FR-Dokument bei der Textmarke24 ab. Beim nächsten Durchlauf bricht er im IT-Dokument bei der Textmarke27 ab. Beim nächsten im DE-Dokument bei der Textmarke3, etc.

wdApp.ActiveDocument.Bookmarks(TM).Range.PasteExcelTable False, False, False
Ich kann mir nicht erklären warum das passiert?
Vielen Dank für Eure Hilfe.
LG
Dome
Anzeige
Auch Gelöst
09.12.2019 14:22:04
Dome
Hi,
Hat sich ebenso von alleine erledigt. ;)
Habe vergessen den einen Baustein einer Textmarke zuzuweisen..
LG
Dome

190 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige