Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
26.03.2021, 16:47
(Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2021, 16:48 von RPP63.)
Moin Uwe!
Ich bin mir ziemlich sicher, dass der Compiler dies selbständig erkennt und deshalb automatisch ein Leerzeichen setzt.
Aus dem falschen
.Application.Documents.Open(strPfad)
wird dann
.Application.Documents.Open (strPfad)
In der Sache (Klammern gehören da nicht hin) hast Du natürlich Recht!
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ich bins wieder mit dem Mailmerge ... Wie gewohnt auch wieder etwas theoretisch. Also, hier mal was in einen Code von Ralf reingemixt. Ich hab dazu bewusst den StarteWord genommen, um eventuelle Aktualisierungsfragen beim Öffnen der Word-Datei abzublocken.
Code:
Sub StarteWord()
Dim objWordApp As Object
Dim wdDok As Object
Dim strPfad As String
'--------------------------------------------------------------
'Hinweis: Die Pfade und Dateinamen in den folgenden Zeilen sind nach Bedarf anzupassen!!
'--------------------------------------------------------------
strPfad = ThisWorkbook.Path & "\Test1a.docx"
'Pfad zur Pruefung ausgeben
Debug.Print Dir(strPfad)
'Word starten. Könnte man ggf. mit GetObject auf eine laufende Instanz zugreifen
Set objWordApp = CreateObject("Word.application")
'Mit der WordApplication ...
With objWordApp.Application
.Visible = True 'sichtbar
.WindowState = 0 '0 = Normal; 1 = Maximized; 2 = Minimized
.Activate 'aktivieren
.DisplayAlerts = False 'Eventuelle Fehlermeldungen unterdruecken
Set wdDok = .Documents.Open(strPfad) 'Serienbriefdatei oeffnen
'Variante a)
'diese auskommentierte Zeile hat noch eine Abfrage nach der Tabelle zur Folge
'wdDok.MailMerge.OpenDataSource Name:=ThisWorkbook.Path & "\adressen.xlsx"
'Variante b)
'diese Variante regelt auch die Abfrage ...
With wdDok.MailMerge
.OpenDataSource Name:=ThisWorkbook.Path & "\adressen.xlsx", ReadOnly:=True, AddToRecentFiles:=False, _
LinkToSource:=False, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
SQLStatement:="SELECT * FROM `Tabelle1$`" ', SubType:=wdMergeSubTypeAccess
'.Execute 'fuehrt den Serienbrief aus, wenn man's auskommentiert :-)
End With
End With
'Set objWordApp = Nothing
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Royalty
Registriert seit: 18.03.2021
Version(en): Office 365
(26.03.2021, 17:08)schauan schrieb: Hallöchen,
ich bins wieder mit dem Mailmerge ... Wie gewohnt auch wieder etwas theoretisch. Also, hier mal was in einen Code von Ralf reingemixt. Ich hab dazu bewusst den StarteWord genommen, um eventuelle Aktualisierungsfragen beim Öffnen der Word-Datei abzublocken.
Code:
Sub StarteWord()
Dim objWordApp As Object
Dim wdDok As Object
Dim strPfad As String
'--------------------------------------------------------------
'Hinweis: Die Pfade und Dateinamen in den folgenden Zeilen sind nach Bedarf anzupassen!!
'--------------------------------------------------------------
strPfad = ThisWorkbook.Path & "\Test1a.docx"
'Pfad zur Pruefung ausgeben
Debug.Print Dir(strPfad)
'Word starten. Könnte man ggf. mit GetObject auf eine laufende Instanz zugreifen
Set objWordApp = CreateObject("Word.application")
'Mit der WordApplication ...
With objWordApp.Application
.Visible = True 'sichtbar
.WindowState = 0 '0 = Normal; 1 = Maximized; 2 = Minimized
.Activate 'aktivieren
.DisplayAlerts = False 'Eventuelle Fehlermeldungen unterdruecken
Set wdDok = .Documents.Open(strPfad) 'Serienbriefdatei oeffnen
'Variante a)
'diese auskommentierte Zeile hat noch eine Abfrage nach der Tabelle zur Folge
'wdDok.MailMerge.OpenDataSource Name:=ThisWorkbook.Path & "\adressen.xlsx"
'Variante b)
'diese Variante regelt auch die Abfrage ...
With wdDok.MailMerge
.OpenDataSource Name:=ThisWorkbook.Path & "\adressen.xlsx", ReadOnly:=True, AddToRecentFiles:=False, _
LinkToSource:=False, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
SQLStatement:="SELECT * FROM `Tabelle1$`" ', SubType:=wdMergeSubTypeAccess
'.Execute 'fuehrt den Serienbrief aus, wenn man's auskommentiert :-)
End With
End With
'Set objWordApp = Nothing
End Sub
Vielen Dank für die Hilfe. Ich habe es jetzt mal etwas ausprobiert und es funktioniert mit dem Code.
Gruß
Roy