Objektvariable oder With-Blockvariable nicht festgelegt
Hallo,
habe ein vba-Script was eine bearbeitete csv aus Excel an Word übergibt und daraus dann einen Serienbrief macht
Der Excel-Part (das automatisierte Bearbeiten der csv) läuft sauber durch, doch als es dann an die Übergabe an Word geht kommt folgender Fehler:
Objektvariable oder With-Blockvariable nicht festgelegt
Die Vorlagen-Worddatei wird noch sauber geöffnet, nur die Daten können nicht mehr eingelesen werden.
Hier der Code:
In Zeile 11 steckt laut vba besagter Fehler.
Ich hatte das Makro vorher mit Office '03 im Einsatz, und da lief alles wunderbar.
Jetzt mit der 10er tritt der Fehler jedoch auf.
Ich hatte vorher einen anderen Fehler:
In Zeile 7 bekam ich den Fehler "Befehl misslungen".
Eine Pause mit Application.Wait DateAdd("s", 1, Now()) löste das Problem (zur Sicherheit dahinter direkt nochmal Eine...)
Nun ja, aber beim 2ten Fehler stecke ich fest.
Könnt ihr mir helfen?
habe ein vba-Script was eine bearbeitete csv aus Excel an Word übergibt und daraus dann einen Serienbrief macht
Der Excel-Part (das automatisierte Bearbeiten der csv) läuft sauber durch, doch als es dann an die Übergabe an Word geht kommt folgender Fehler:
Objektvariable oder With-Blockvariable nicht festgelegt
Die Vorlagen-Worddatei wird noch sauber geöffnet, nur die Daten können nicht mehr eingelesen werden.
Hier der Code:
sFile = "K:\XXX\Vorlagen_2003\TelefonverzeichnisXXX.doc"
Set WinWord = CreateObject("Word.Application")
With WinWord
.Visible = True
Application.Wait DateAdd("s", 1, Now())
.Documents.Open Filename:=sFile
Application.Wait DateAdd("s", 1, Now())
'//WinWord.Documents.Open ("K:XXX\Vorlagen_2003\Telefonverzeichnis\XXX.doc")
With WinDoc
With .MailMerge
.OpenDataSource Name:=strDatenQuelle, LinkToSource:=True, Format:=0, SQLStatement:="SELECT * FROM `tp.csv$`"
.Destination = 0
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
Set docSerienbrief = WinWord.ActiveDocument
.DataSource.Close
End With
End With
Set docSerienbrief = .Documents(1)
WinDoc.Close False
End With
In Zeile 11 steckt laut vba besagter Fehler.
Ich hatte das Makro vorher mit Office '03 im Einsatz, und da lief alles wunderbar.
Jetzt mit der 10er tritt der Fehler jedoch auf.
Ich hatte vorher einen anderen Fehler:
In Zeile 7 bekam ich den Fehler "Befehl misslungen".
Eine Pause mit Application.Wait DateAdd("s", 1, Now()) löste das Problem (zur Sicherheit dahinter direkt nochmal Eine...)
Nun ja, aber beim 2ten Fehler stecke ich fest.
Könnt ihr mir helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208746
Url: https://administrator.de/contentid/208746
Ausgedruckt am: 23.11.2024 um 03:11 Uhr
11 Kommentare
Neuester Kommentar
Das Problem sind wie schon gesagt die verschachtelten WITH-Blöcke. Bei verschachtelten With-Blöcken gilt der Punkt immer für das Objekt des äußersten WITH-Blocks.
Versuch es erst mal damit:
Versuch es erst mal damit:
sFile = "K:\XXX\Vorlagen_2003\TelefonverzeichnisXXX.doc"
Set WinWord = CreateObject("Word.Application")
With WinWord
.Visible = True
Set WinDoc = .Documents.Open(FileName:=sFile)
WinDoc.MailMerge.OpenDataSource Name:=strDatenQuelle, LinkToSource:=True, Format:=0, SQLStatement:="SELECT * FROM `tp.csv$`"
WinDoc.MailMerge.Destination = 0
WinDoc.MailMerge.SuppressBlankLines = True
WinDoc.MailMerge.DataSource.FirstRecord = wdDefaultFirstRecord
WinDoc.MailMerge.DataSource.LastRecord = wdDefaultLastRecord
WinDoc.MailMerge.Execute Pause:=False
Set docSerienbrief = WinWord.ActiveDocument
WinDoc.MailMerge.DataSource.Close
WinDoc.Close False
Set docSerienbrief = .Documents(1)
End With