Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
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 Zellinhalte in Word Tabelle einfügen

VBA Excel Zellinhalte in Word Tabelle einfügen
25.08.2015 12:48:08
Moritz
Hallo Zusammen,
ich habe folgendes Problem. Ich möchte die Daten eines bestimmten Excel-Datenblatts über einen CommandButton automatisch in eine Word Tabelle einfügen lassen, hierbei ist die Auswahl der Tabellenzellen sowohl in Excel als auch Word wichtig. Dieses Word Doc soll dann zur Abstimmung der jeweiligen Textbausteine versendet werden (Verwendung des erstellten Dokuments) und daraufhin wieder in die ursprüngliche Excel-Datei eingefügt werden, indem die alten Zellinhalte überschrieben werden. Der Export aus Excel heraus, läuft über ein Makro (aus dem Internet zusammengebastelt) , welches automatisch einen Serienbrief generiert. Wenn ich dieses Makro jedoch durchlaufen lasse, löscht es mir das in Word hinterlegte Makro des "Datenimport" (entspricht ja eigentlich auch einem Export), dessen CommandButton jedoch bleibt bestehen. Kann mir hier jemand weiterhelfen?
Das Serienbrief Makro sieht wie folgt aus:

Private Const strDatenQuelle As String = "C:\WorkBox_Vorlagen\Mappe1.xlsx"  'Transfer-Excel- _
Datei Pfad
Private Const strWOrdvorlage As String = "C:\WorkBox_Vorlagen\Archiv_Versuche\Import.dotm"    '  _
_
Word-Vorlage Serienbrief Pfad
Sub CommandButton1_Click()
Dim Bereich As Range, wb As Workbook
Z = Cells(Rows.Count, 3).End(xlUp).Row
Set Bereich = Range("A1: P2" & Z & "") 'Bereich mit Serienbrief-Daten
Set wb = Workbooks.Open(Filename:=strDatenQuelle)
'    Workbooks.Open Filename:= _
"D:\Time WorkBoxVersuch.xls"
'Datei Speichern und schliessen
wb.Save
wb.Close
Call Serienb
End Sub
Sub Serienb() 'Im Excel VBA-Editor für die Datei mit diesem Makro unter Extras-Verweise _
den Verweis auf die Microsoft Word x.y Object Library aktivieren!!
Dim WinWord, WinDoc As Word.Document, docImport As Word.Document
Dim sFile As String, strCon As String
sFile = strWOrdvorlage
Set WinWord = CreateObject("Word.Application")
With WinWord
.Visible = True
'Vorlagedatei öffnen
Set WinDoc = .Documents.Open(sFile)
With WinDoc
With .MailMerge
'Datenquelle öffnen
.OpenDataSource Name:=strDatenQuelle, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:="", _
Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" _
& "User ID=Admin;" _
& "Data Source=" & strDatenQuelle & ";" _
& "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:System database="""";" & "Jet OLEDB:Registry Path="""";" _
& "Jet OLEDB:Database Password="""";" _
& "Jet OLEDB:Engine ", _
SQLStatement:="SELECT * FROM `Tabelle1$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
'Serienbrief mit allen Daten in neuem Dokument erstellen
.Destination = NewDocument         'wdSendToNewDocument, ohne SendTo funktioniert es    _
_
_
strWOrdvorlage
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
Set docImport = WinWord.ActiveDocument
'Datenquelle wieder schliessen
.DataSource.Close
End With
'Vorlagedatei wieder schliessen (entfernt)
docImport.Application.WindowState = wdWindowStateMaximize
End With
Set docImport_Vorlage = Nothing
Set WinWord = Nothing
Set WinDoc = Nothing
End With
End Sub

Was noch gesagt werden muss ist, dass als Datenquelle eine andere, verlinkte Exceldatei herhalten muss bisher, weil ich es nicht hinbekommen habe das aktive Exceldokument als Datenquelle zu verwenden.
Das Word Makro zum "Datenimport" sieht wie folgt aus:

Private Sub CommandButton1_Click()
Dim i As Integer
Dim xlApp As Excel.Application
Dim xlWorkbook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim strPathExcel As String
Dim blnFileExists As Boolean
strPathExcel = "C:\Versuche\Import.xlsm"
'* Excel öffnen
Set xlApp = CreateObject("Excel.Application")
'* Überprüfen ob File existiert
If Dir(strPathExcel) = "" Then '* File existiert nicht
blnFileExists = False
Set xlWorkbook = xlApp.Workbooks.Add
Else '* File existiert
blnFileExists = True
Set xlWorkbook = xlApp.Workbooks.Open(strPathExcel)
End If
'* Applikation "verstecken"
xlApp.Visible = False
Set xlSheet = xlWorkbook.Worksheets(1)
Set xlSheet2 = xlWorkbook.Worksheets(2)        'entsprechendes Tabellenblatt angeben
'*Bestimmte Felder über deren Namen ansprechen
'* und in die gewünschte Zelle setzen
xlSheet2.Cells(2, 1) = ActiveDocument.Tables(1).Cell(2, 1) 'gewünschtes Tabellenblatt, oben  _
aus Set die Bezeichnung übernehmen
xlSheet.Cells(2, 2) = ActiveDocument.Tables(1).Cell(2, 2)
xlSheet.Cells(2, 3) = ActiveDocument.Tables(1).Cell(4, 1)
MsgBox "Export abgeschlossen!"
'* Applikation wieder sichtbar machen
xlApp.Visible = True
'* Excel schliessen
Set xlWorkbook = Nothing
Set xlSheet = Nothing
'* Applikation beenden
xlApp.Quit
Set xlApp = Nothing
End Sub

Das Worddokumemt könnte auch als Template abgespeichert werden. Kann hier jemand bei diesem Problem weiterhelfen? Möglicherweise muss man den Export aus Excel heraus nicht über eine Serienbrieffunktion starten, vlt vereinfacht dies das ganze. Vielen Dank schon mal im Voraus! Grüße :)

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel Zellinhalte in Word Tabelle einfügen
28.08.2015 10:34:45
Jürgen
Hallo Moritz,
mit der Ausgabe der Serienbriefe in eine einzige Word-Datei wird das ursprüngliche Dokument für jeden Datensatz in die Zieldatei in einem eigenen Abschnitt eingefügt. Makros werden dabei jedoch nicht übernommen.
Um Dein Ziel zu erreichen müsstest Du nach meiner Ansicht über das Word-MailMerge-Obkjekt per Schleife durch jeden Datensatz gehen und einzelne Word-Dateien speichern.
Wenn Du das Gesamtergebnis des Serienbriefs in einer einzigen Datei benötigst, müsstest Du das Makro und die Schaltfläche nach der Dateierstellung (manuell?) hinzufügen.
Gruß, Jürgen
Anzeige

346 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige