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

Word wird nicht befüllt?

Word wird nicht befüllt?
19.08.2021 08:27:11
Martina
https://www.herber.de/bbs/user/147697.xlsm
Ich würde gerne aus einer Excel heraus per Serienbrief (nach vorhergehender festgelegter Bedingung) einen Brief erzeugen. (arbeite mit Office 365)
Beispiel:
Wenn in Spalte B eine 1 steht, dann schreib mir den Brief.....
Das Worddokument habe ich entsprechend erstellt, im selben Ordner hinterlegt, verknüpft etc....
Ich bin echter Newbie bei sowas und habe mich mal durchs Netz gewühlt und auch "etwas" hinbekommen.
Allerdings öffnet mir das VBA meinen Brief nur und befüllt diesen nicht.
Ich habe mit Sicherheit irgendwas übersehen, nur was ?
Code:

Sub fp_Excel_Word_Serienbrief_erstellen()
'-------------------------------------------
Dim ws As Worksheet
Set ws = ActiveSheet
Dim varRange As Excel.Range
'
'*pruefe, ob in der Spalte B ein Eintrag vorhanden ist
Dim intSendezeile As Integer
intSendezeile = 0
Dim intZeile As Integer
For intZeile = 1 To 1000
If ws.Range("B" & intZeile).Value = 1 Then
intSendezeile = intZeile
Exit For
End If
Next
' check sende1 >
'
If intSendezeile = 0 Then
MsgBox "Es gibt keine Zeile die gesendet werden kann. Alle Zellen in Spalte B sind leer", vbCritical, "fp_Excel_Word_Serienbrief_erstellen()"
Exit Sub
End If
' Kontrolle >
'*diese Funktion oeffnet den Serienbrief BR-Mitteilung
Dim sFilename As String
sFilename = ThisWorkbook.Path & "\" & Names("varSerienbrief_Master_Filename").RefersToRange.Value
'
Dim fs As New FileSystemObject
If fs.FileExists(sFilename) = False Then
MsgBox "Die Datei existiert nicht" & vbCrLf & "Dateiname:" & sFilename, vbCritical, "fp_Excel_Word_Serienbrief_erstellen()"
Exit Sub
End If
' check Document >
'
Dim wordApp As Object 'As New Word.Application 'Word-dll
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
' Word starten >
'
'Dim docx As Object
Dim docx As Word.Document 'word-dll
Set docx = CreateObject("Word.Document")
Set docx = wordApp.Documents.Open(sFilename, ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False)
' Word Document oeffnen >
Dim wb As Workbook
Set wb = ThisWorkbook
Dim sExcel_Filename As String
sExcel_Filename = ThisWorkbook.FullName
'
'*Datenquelle für den Seriendruck
If wordApp.Build Like "12*" Then
'--
doc.MailMerge.OpenDataSource Name:=sExcel_Filename _
, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sExcel_Filename & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Eng;TypeGuessRows=0;" _
, SQLStatement:="SELECT * FROM `Adressen`", SQLStatement1:=" WHERE Anschreiben='1'", SubType:=1
'*subtype:=1=wdMergeSubTypeAccess
'- Ist_Office2007 >-
End If
' Datenquelle einstellen >
'
If Err.Number = 9 Then
'Fehler Maric... Update()
Err.Clear
doc.MailMerge.Execute
ElseIf Err.Number  0 Then
MsgBox "Fehler beim Daten holen Word von Excel." & vbCrLf & Err.Description, vbCritical, "fp_Excel_Word_Serienbrief_erstellen()"
End If
' Serienbrief erzeugen >
'-------------------------------------------
End Sub

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word wird nicht befüllt?
19.08.2021 08:45:44
Martina
Hab noch das Word hochgeladen.
Anmerkungen, im Makro steht Docx, das Dokument konnte ich nur als doc hochladen, ändert aber nichts am nicht befüllen :-(
https://www.herber.de/bbs/user/147698.doc
AW: Word wird nicht befüllt?
20.08.2021 10:58:55
Luschi
Hallo Martina,
den entscheidenden Faktor beinhaltet dieser Zeile:
If wordApp.Build Like "12*" Then
'-< Ist_Office2007 >-
- Du prüfst auf Office 2007
- und nur dann wird der nachfolgende Befehl: docx.MailMerge.OpenDataSource ... ausgeführt
- ändere die Prüfung auf: If Val(wordApp.Build) >=12
- wordApp.Build ergibt bei mir: 16.0.14228 und Val(...) macht daraus die Zahl 16
- und dieser Wert muß >= 12 sein
- ansonsten solltest Du einen Hinweis bringen, daß die eingesetzte Wordversion 'steinalt' ist
- und nicht für dieses Vba-Programm geeignet ist und das Progamm beenden!
- benutze auch hier: Set docx = CreateObject("Word.Document")
Noch ein Hinweis bezüglich der Verweise von Excel zu 'Word:
- für die Verbindung zur Wordapplication benutzt Du: Set wordApp = CreateObject("Word.Application")
- also 'late bindung' und somit ist das Häckchen zur Word-Bibliothek nicht erforderlich (entfernen)
- für das Word-Dokumnent benutzt Du aber: Dim docx As Word.Document
- und das ist 'early binding' und somit ist das Häckchen zur Word-Bibliothek doch wieder erforderlich
- und damit inkonsequent in der Programmierung
- für den Vba-Einsteiger ist 'early binding' der einfachere Einstieg in die Materie,
  denn es funktioniert die IntelliSense und damit Unterstützung für den Entwickler
- wenn dann das Programm entwickelt ist und läuft, dann schlte ich auf 'late binding' um
- entferne die Vba-Verweise zu Word
- das hat den Vorteil, immer die aktuellste Wordversion angesprochen wird
- die auf dem PC/Notebook installiert ist, denn nicht immer klappt der automatische Umsprung auf die vorhandene Version
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Word wird nicht befüllt?
20.08.2021 12:15:00
Martina
Hallo Luschi,
erstmal vielen lieben Dank.
Ich bin, wie gesagt, absoluter Newbie :-(
Das hier habe ich angepasst: If wordApp.Build Like "12*" Then
Allerdings kommt jetzt ein Laufzeitfehler an dieser Stelle:
doc.MailMerge.OpenDataSource Name:=sExcel_Filename _
, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sExcel_Filename & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Eng;TypeGuessRows=0;" _
, SQLStatement:="SELECT * FROM `Adressen`", SQLStatement1:=" WHERE Anschreiben='1'", SubType:=1
Laufzeitfehler 9105 Die Zeichenfolge ist länger als 255Zeichen
Ich bin aber bezüglich meines "Problems" bereits bilateral mit jemanden in Kontakt, in der Hoffnung hier eine Lösung zu finden.
Vermutlich liegt es daran, das ich, wie Du schon richtigerweise geschrieben hast, in dem VBA Bezug auf die 2007 Version nehme, aber mit einer Office 365er Version arbeite.
Würde vermuten, das auch hier der Bezug angepasst werden muss...
Da reicht es bei mir aber einfach kognitiv nicht ( ;-) ) .....ich brauche da genaue Anweisungen, was ich an welcher Stelle ändern muss...
Sorry, ich bin schlichtweg zu dumm dafür....
Anzeige
AW: Word wird nicht befüllt?
20.08.2021 13:19:07
mumpel
Siehe Email. Das lässt sich mit Bookmarks lösen.
Für alle die es interessiert:
Sub fp_Excel_Word_Serienbrief_erstellen()


  Dim lngZeile      As Long
  Dim sFilename     As String
  Dim wdApp         As Object
  Dim wdDoc         As Object
  Dim wdRange       As Object
  
  Dim lngLastCell   As Long

sFilename = ThisWorkbook.Path & "\" & Names("varSerienbrief_Master_Filename").RefersToRange.Value

lngLastCell = ThisWorkbook.Sheets("Übersicht").Range("C" & Rows.Count).End(xlUp).Row

 For lngZeile = 2 To lngLastCell
     If Range("B" & lngZeile).Value = 1 Then
        
        Set wdApp = CreateObject("Word.Application")
            wdApp.Visible = True
            Set wdDoc = CreateObject("Word.Document")
            Set wdDoc = wdApp.Documents.Open(sFilename)
            On Error Resume Next
               If wdDoc.Bookmarks.Exists("Vorname") Then
                  Set wdRange = wdDoc.Bookmarks("Vorname").Range
                      wdRange = ThisWorkbook.Sheets("Übersicht").Range("D3").Value
                      wdDoc.Bookmarks.Add "Vorname", wdRange
               End If
               If wdDoc.Bookmarks.Exists("Nachname") Then
                  Set wdRange = wdDoc.Bookmarks("Nachname").Range
                      wdRange = ThisWorkbook.Sheets("Übersicht").Range("E3").Value
                      wdDoc.Bookmarks.Add "Nachname", wdRange
               End If
            On Error GoTo 0
                wdDoc.SaveAs2 Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Sheets("Übersicht").Range("D3").Value & "_" & _
                                        ThisWorkbook.Sheets("Übersicht").Range("E3").Value, _
                                        FileFormat:=wdFormatXMLDocument
                wdDoc.Close
            wdApp.Quit
            Set wdDoc = Nothing
            Set wdApp = Nothing
    End If
 Next lngZeile
 
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung: René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: Word wird nicht befüllt?
20.08.2021 15:15:04
Martina
Hallo Luschi,
erstmal vielen lieben Dank.
Ich bin, wie gesagt, absoluter Newbie :-(
Das hier habe ich angepasst: If wordApp.Build Like "12*" Then
Allerdings kommt jetzt ein Laufzeitfehler an dieser Stelle:
doc.MailMerge.OpenDataSource Name:=sExcel_Filename _
, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sExcel_Filename & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;Jet OLEDB:Eng;TypeGuessRows=0;" _
, SQLStatement:="SELECT * FROM `Adressen`", SQLStatement1:=" WHERE Anschreiben='1'", SubType:=1
Laufzeitfehler 9105 Die Zeichenfolge ist länger als 255Zeichen
Ich bin aber bezüglich meines "Problems" bereits bilateral mit jemanden in Kontakt, in der Hoffnung hier eine Lösung zu finden.
Vermutlich liegt es daran, das ich, wie Du schon richtigerweise geschrieben hast, in dem VBA Bezug auf die 2007 Version nehme, aber mit einer Office 365er Version arbeite.
Würde vermuten, das auch hier der Bezug angepasst werden muss...
Da reicht es bei mir aber einfach kognitiv nicht ( ;-) ) .....ich brauche da genaue Anweisungen, was ich an welcher Stelle ändern muss...
Sorry, ich bin schlichtweg zu dumm dafür....
Anzeige
AW: Word wird nicht befüllt?
20.08.2021 17:51:52
Luschi
Hallo Martina,
habe mir die Excel-Datei, die die Daten für den Serienbrief liefert, genauer angesehen. Um aber dafür dienen zu können, muß sie auch gewissen Kriterien entsprechen, die aus der Datenbank-Theorie stammen:
- kurze Spaltenüberschriften ohne Kommen, Klammern und sonstigen Sonderzeichen wie Punkt etc. und ohne Umlaute
- ein definierter Excel-Namensbereich, der die Gesamtmenge der Daten + Spaltenüberschriften
- in Deinem SQL-Statement werden Begriffe verwendet, die Excel nicht bereitstellt, wie
  Adressen und Anschreiben
Ich versuche über das WE dies in die Reihe zu bekommen, wenn es allerdings immer nur ein Datensatz ist, dann ist die Methode von Mumpel auch überlegenswert, denn dann braucht man keine Serienbrie-Funktionalität.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Word wird nicht befüllt?
20.08.2021 19:08:48
mumpel
SQL und Serienbrief braucht es nicht. Wir nutzen die Bookmark-Methode, die Dateien werden in Schleife erstellt. Das funktioniert genau so wie es soll.
AW: Word wird nicht befüllt?
20.08.2021 22:09:08
Martina
Ja Mumpel, dass klingt gut. Ich werde am Wochenende alles mal in Ruhe ausprobieren. War heute als "Zwischendurch-Arbeit" nicht meine beste Idee. Da brauch ich etwas mehr Ruhe dazu.
Dir auf jeden Fall vorab einen Mega-Dankeschön.
Ich melde mich auf jeden Fall, wenn ich fertig bin.
AW: Word wird nicht befüllt?
20.08.2021 22:01:51
Martina
Ich werde am Wochenende mal die Version von Mumpel anpassen und testen.
Vorab schonmal vielen vielen vielen Dank
AW: Word wird nicht befüllt?
20.08.2021 11:56:34
Herbert_Grom
Hallo Martina,
mach es dir doch nicht so schwer und erstelle deine Briefe einfach auch in Excel, so wie ich es schon seit über 20 Jahren mache, dann kannst du dir das ganze "Word"-gedöns sparen! Wenn du dazu Hilfe brauchst, sag Bescheid.
Servus
Anzeige
AW: Word wird nicht befüllt?
20.08.2021 22:04:55
Martina
Hallo Herbert,
Ok, ab da bin ich da komplett raus ;-)....man lernt nie aus....wusste nicht, dass sowas überhaupt geht...
AW: Word wird nicht befüllt?
21.08.2021 09:44:17
Luschi
Hallo Martina,
ich habe Dein Problem zum Serienbrief lauffähig gemacht - Erklärungen und Infos findest Du in der Excel-Datei.
https://www.herber.de/bbs/user/147732.zip
Gruß von Luschi
aus klein-Paris
AW: Word wird nicht befüllt?
22.08.2021 10:01:14
mumpel
Der Code funktioniert nicht richtig. Der erstellt immer nur einen Brief, auch wenn in mehreren Zeilen eine 1 steht. Und es wird einmal die "Vorlage" geöffnet ohne sie auszufüllen, es ist also eine Datei zuviel offen. Ich glaube meine Version mit den Bookmarks ist einfacher für eine Anfängerin. 😉
Anzeige
AW: Word wird nicht befüllt?
22.08.2021 11:35:16
Luschi
Hallo Mumpel,
danke für Dein Interesse an diesem Thema. Mir ging es erstmal darum, das Ding zum laufen zu bringen, damit die Anfragerin sieht, was beachtet werden muß. Der Rest (je Adresse ein gesonderter Brief statt ein Gesamtbrief) ist dann nur noch ein kleiner Schritt über eine Do-Loop-Schleife.
Werde diese Version heute Abend reinstellen.
Gruß von Luschi
aus klein-Paris
AW: Word wird nicht befüllt?
22.08.2021 19:05:44
Luschi
Hallo Martina & Mumpel,
hier die neue Version, wobei für jede Adresse ein getrennter Serienbrief erzeugt wird, di zum Schluß: nstütlivh novh abgespeichert werden müssen.
Aber auch das kann man noch mit einbauen, so das zum Schluß die fertigen SB's in einem Ordner als Dateien vorliegen.
https://www.herber.de/bbs/user/147744.zip
Ich glaube, damit hat die Serienbrief-Funktionalität mehr Vorteile als die BookMark-Verwendung.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Word wird nicht befüllt?
23.08.2021 08:02:55
Martina
Guten Morgen,
leider kam ich gestern nicht mehr dazu, das Ganze zu testen.
Ich hoffe, das ich bis Mitte der Woche alle Infos und Vorschläge mal durchgehen kann und würde dann auch eine Rückmeldung dazu geben.
Ich bin beeindruckt, was ihr alles so könnt und welche Möglichkeiten VBA und Excel da so zulassen.
1000 Dank vorab schonmal an alle Beteiligten!
AW: Word wird nicht befüllt?
24.08.2021 07:21:29
Martina
Guten Morgen,
kurze Rückmeldung:
Es läuft und ich bin total happy!!
Vielen Dank an alle, die sich hier so konstruktiv gekümmert haben!!!!
Ihr habt echt was drauf!!
LG
AW: Word wird nicht befüllt?
24.08.2021 18:47:27
Luschi
Hallo Martina,
für welches System hast Du dich denn nun entschieden: Serienbrief oder Bookmark?
fragt sich Luschi
aus klein-Paris
Anzeige
AW: Word wird nicht befüllt?
24.08.2021 20:23:08
mumpel
Für die Bookmarks. Läuft auch wie gewünscht.
AW: Word wird nicht befüllt?
24.08.2021 22:17:04
Luschi
Hallo Mumpel,
woher weißt Du das?
fragt sich Luschi
aus klein-Paris
Die SB-Funktion lauft doch auch hervorragend und macht bei erforderlichen Änderungen weniger Arbeit.
AW: Word wird nicht befüllt?
25.08.2021 08:51:18
Martina
Hallo zusammen,
ich habe tatsächlich Anwendung für beide gefunden ;-)
Die Version von Mumpel für mein "primäres" Problem.
Hier wird bei der Anforderung tatsächlich nur ein Dokument benötigt, und die Liste wird von mehreren Benutzern genutzt. Insofern ist die Lösung von Mumpel perfekt.
Dein Makro, Luschi, habe ich gerade in Arbeit (Anpassung), für einen tatsächlichen Serienbrief, bei dem ich zeitgleich mehrere Dokumente erzeugen möchte.
Somit hat sich die viele Arbeit und Unterstützungsleistung von euch beiden echt ausgezahlt und findet Verwendung :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige