Je rencontre un problème avec un code de fusion et publipostage censé générer des lettres dans notre application. Je suis conscient que ce code est un peu difficile en ce moment, mais nous sommes dans la phase "Get something working" avant de le ranger.L'automatisation de Word Mailmerge ne fonctionne pas comme prévu
Maintenant, la façon dont cela est censé fonctionner, et la façon dont cela fonctionne quand nous le faisons manuellement, est que nous avons un fichier (la variable fileOut + ".template") qui est un modèle pour la lettre. Nous ouvrons ce modèle, le fusionnons, puis l'enregistrons en tant que nom de fichier dans la variable fileOut. Toutefois, ce qu'il fait est d'enregistrer une copie du fichier modèle dans le nom de fichier, au lieu de la sortie de la fusion.
J'ai cherché et j'ai l'impression de me taper la tête contre un mur de briques. Fichier_données est le fichier de données qui contient les données de fusion.
En utilisant les mêmes fichiers, tout fonctionne si vous le faites manuellement.
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
J'ai clarifié un peu le code. La variable a été mal nommée, et templateName était en fait la source de données. J'ai dit que le code était approximatif :) – hulver