Problem mit Funktion "ThisWorkbook.Path &"
#21
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)
Top
#22
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:
  • Royalty
Top
#23
(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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste