У меня возникла проблема с некоторым кодом слияния, который, как предполагается, создает буквы в нашем приложении. Я знаю, что этот код немного груб в данный момент, но мы находимся на этапе «Получить что-то работающее», прежде чем мы его уберем.Автоматизация Word Mailmerge не работает должным образом
Теперь, как это должно работать, и как это работает, когда мы делаем это вручную, есть ли у нас файл (переменная fileOut + ".template"), который является шаблоном для письма. Мы открываем этот шаблон, объединяем его и сохраняем его как имя файла в переменной fileOut.
Однако то, что он делает, это сохранение копии файла шаблона в файле filoutame вместо вывода слияния.
Я искал, и я, кажется, стучу головой о кирпичную стену.
datafile - это файл данных, содержащий данные о слиянии.
Используя те же файлы, все работает, если вы делаете это вручную.
Public Function processFile(ByVal datafile As String, ByVal fileOut As String) As String
Dim ans As String = String.Empty
errorLog = "C:\Temp\Template_error.log"
If (File.Exists(datafile)) Then
Try
' Create an instance of Word and make it invisible.'
wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
' Add a new document.'
wrdDoc = wrdApp.Documents.Add(fileOut & ".template")
wrdDoc.Select()
Dim wrdSelection As Word.Selection
Dim wrdMailMerge As Word.MailMerge
wrdDoc.MailMerge.OpenDataSource(datafile)
wrdSelection = wrdApp.Selection()
wrdMailMerge = wrdDoc.MailMerge()
With wrdMailMerge
.Execute()
End With
wrdDoc.SaveAs(fileOut)
wrdApp.Quit(False)
' Release References.'
wrdSelection = Nothing
wrdMailMerge = Nothing
wrdDoc = Nothing
wrdApp = Nothing
ans = "Merged OK"
Call writeToLogFile(errorLog, "This worked, written to " & fileOut)
Catch ex As Exception
ans = "error : exception thrown " & ex.ToString
Call writeToLogFile(errorLog, ans)
End Try
Else
ans = "error ; unable to open Date File : " & datafile
If (logErrors) Then
Call writeToLogFile(errorLog, "The specified source csv file does not exist. Unable " & _
"to process it. Filename provided: " & datafile)
End If
End If
Return ans
End Function
Я немного уточнил код. Переменная была неверно названа, а templateName на самом деле является источником данных. Я сказал, что код был грубым :) – hulver 2008-10-01 06:56:02