Ich konnte erfolgreich (mit so viel Hilfe von einem Stack-Exchange-Benutzer) ein Makro zum automatischen Seriendruck eines Word-Dokuments von Excel. Aber das Problem ist jetzt, wenn das Wort Dokument nicht geöffnet ist, bekomme ich einen Automatisierungsfehler.Jede andere Methode, um "Automatisierungsfehler" zu lösen
Im Moment löse ich es, indem ich das Word-Dokument jedes Mal öffne, aber ich bezweifle, dass das die richtige Programmiermethode ist.
Irgendwelche Vorschläge, um diesen Fehler zu beheben? Ich bin sehr neu in VBA. Dies ist Teil meiner Studentenaufgaben. Irgendwelche Ratschläge oder Codeänderungen, um diesen Fehler zu beheben? Ich habe die offiziellen msdn docs gelesen, habe nichts verstanden. '(
Der Fehler ist in der Regel ‚Automatisierungsfehler - mit einem Kreuzzeichen‘ oder diesem:: http://imgur.com/a/zitah Für beide diese Fehler Lösung bisher war zunächst das Word-Dokument zu öffnen und dann Makro ausführen
.Update: ich entfernte "auf Fehler ..." Teil und jetzt der Fehler ist dies: http://imgur.com/a/epmGR
das Programm ist wie folgt:
Const wdFormLetters = 0, wdOpenFormatAuto = 0
Const wdSendToNewDocument = 0, wdDefaultFirstRecord = 1, wdDefaultLastRecord = -16
Sub RunMerge2()
Dim wd As Object, wdocSource As Object
Dim sh As Worksheet
Dim Lrow As Long, i As Long
Dim cdir As String, client As String, newname As String
Dim sSQL As String
cdir = "C:\Users\Kamlesh\Desktop\"
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open(cdir & "\master\installers.docx")
Set sh = ActiveSheet
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
With sh
Lrow = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To Lrow
If Len(Trim(.Range("A" & i).Value)) <> 0 Then
client = .Cells(i, 1).Value
newname = "Installer Instructions - " & client & ".docx"
wdocSource.MailMerge.MainDocumentType = wdFormLetters
'~~> Sample String
sSQL = "SELECT * FROM `Sheet1$` WHERE [Client Name] = '" & .Range("A" & i).Value & "'"
wdocSource.MailMerge.OpenDataSource Name:=strWorkbookName, _
AddToRecentFiles:=False, Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:=sSQL
With wdocSource.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
wd.ActiveDocument.SaveAs cdir & newname
wd.ActiveDocument.Close SaveChanges:=False
End If
Next i
End With
wdocSource.Close SaveChanges:=False
'wd.Quit
Set wdocSource = Nothing
Set wd = Nothing
End Sub
Überprüfen Sie mein Update, um herauszufinden, wo der Fehler liegt. – Slai