Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten Top
#23
(26.03.2021, 16: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
Antworten Top


Gehe zu:


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