Word Interop替换仅适用

时间:2015-07-05 10:51:44

标签: .net vb.net ms-word office-interop

所以我得到了我的VB.NET项目,旨在用它们的值替换模板文档中的一堆参数。这是一个示例文档:You have here a an example of template 现在我的问题是我的替换功能只能工作一次。这是:

Private Sub AppliquerParametre(Parameter As String, Value As String)
    Try
        objWordApp.Selection.Find.Execute(FindText:=Parameter, ReplaceWith:=Value)
    Catch ex As Exception
        MessageBox.Show("Une erreur est survenue lors de la génération du fichier : " _
            & vbCrLf & ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

结果如下:

result

虽然我的代码应该做好一切:

    OuvrirFichier(Options.DossierModeles & Options.NomModelePV) 'Open template

    AppliquerParametre("$parcelleDepartement$", Dossier.Parcelle.Departement) 'Apply some parameters
    AppliquerParametre("$parcelleCommune$", Dossier.Parcelle.Commune)
    AppliquerParametre("$parcelleSection$", Dossier.Parcelle.SectionCadastrale)
    AppliquerParametre("$parcelleNumero$", Dossier.Parcelle.NumeroParcelle)
    AppliquerParametre("$parcelleNom$", GenererListeProprietaires(", ")) 'And last field is kind of special but the problem is not here

    ExporterFichier(Options.DossierTravail & Dossier.NumeroDossier & "\PV.doc", WdSaveFormat.wdFormatDocument) 'We "save the file as" in the working directory

你知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:0)

好的所以我找到了问题并找到了解决方法。基本上,当您第一次替换内容时,选择(也就是"区域" Word Interop App将通过Find属性进行搜索的位置)将被重置,这使得它无法找到我们的内容正在寻找下一次。这是一个例子(粗体是选择):

开场时:
我的文档$ field1 $ $ field2 $

我用我的功能替换:
我的文件value1 $ field2 $

我的文件不再被选中了。所以解决方案只是添加

 objWordApp.Documents(1).Content.Select()

在更换功能开始时。它会起作用!