Je souhaite effectuer une itération sur toutes les lignes d'une source de données de fusion et publipostage MS-Word et extraire les données pertinentes dans un fichier XML.Inspection d'une source de données de fusion et publipostage par programme
J'utilise actuellement ce code:
Imports Microsoft.Office.Interop
Do
objXW.WriteStartElement("Recipient")
Dim objDataFields As Word.MailMergeDataFields = DataSource.DataFields
For Each FieldIndex As Integer In mdictMergeFields.Keys
strValue = objDataFields.Item(FieldIndex).Value
If Not String.IsNullOrEmpty(strValue) Then
strName = mdictMergeFields(FieldIndex)
objXW.WriteElementString(strName, strValue)
End If
Next
objXW.WriteEndElement()
If DataSource.ActiveRecord = LastRecord Then
Exit Do
Else
DataSource.ActiveRecord = Word.WdMailMergeActiveRecord.wdNextDataSourceRecord
End If
Loop
Et il se révèle être un peu lent (environ 1 seconde pour chaque ligne). Y a-t-il un moyen de le faire plus vite?
Mon fantasme est de trouver une fonction comme MailMergeDataSource.ToDatatable
puis d'inspecter le datatable.
Je viens d'utiliser un profileur sur mon application et a trouvé que la ligne problématique est strValue = objDataFields.Item (fieldIndex) .Value Remplacement avec strValue = « » rend l'application ultra-rapide! –