需要VBA代码中的基础文件在填充后不被覆盖

问题描述 投票:0回答:1

所以最近我写了一个VBA代码来填充一些基于Excel表格的Word文档。它工作得很好,只是每次运行它时,基本模型 Word 文件都会被新的填充文档覆盖。我对 VBA 编码相当陌生,所以我无法解决这个问题,每次运行代码时我都必须用空文件替换模型文件,以便再次运行它。

代码如下:

Sub AnexoF_CPFL()

Dim Linha As Integer
Linha = InputBox("Qual a linha do projeto?", "Gerar Anexo F CPFL")

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set arqAnexoF = objWord.Documents.Open("C:\Users\Axis\Axis Renováveis Dropbox\Pasta da equipe                Axis Renováveis\Axis Renovaveis Server\4 - Operações\1. Desenvolvimento\2. Prospecção\Consultas de Acesso\Macros\Modelos\CPFL\AnexoF.docx")
Set conteudo = arqAnexoF.Application.Selection

For i = 2 To 25
    conteudo.Find.Text = Cells(1, i).Value
    conteudo.Find.Replacement.Text = Cells(Linha, i).Value
    conteudo.Find.Execute Replace:=wdReplaceAll

Next

arqAnexoF.SaveAs2 Filename:="C:\Users\Axis\Axis Renováveis Dropbox\Pasta da equipe Axis Renováveis\Axis Renovaveis Server\4 - Operações\1. Desenvolvimento\2. Prospecção\Consultas de Acesso\CPFL Paulista\Consultas\" & "Anexo F - " & Cells(Linha, 2), FileFormat:=17

arqAnexoF.Close
objWord.Quit

Set arqAnexoF = Nothing
Set conteudoDoc = Nothing
Set objWord = Nothing

MsgBox ("Anexo F CPFL gerado com sucesso!")

End Sub

如有任何帮助,我们将不胜感激!

曾尝试复制一个新文件,然后填充信息,但我不太擅长VBA,所以失败了。

excel vba ms-word
1个回答
0
投票

您确实应该使用“AnexoF”的 Word 模板(即“AnexoF.dotx”)而不是普通的 Word 文档。除此之外,例如通过双击打开模板,创建一个新文档,从而最大限度地减少覆盖它的机会。您还应该声明所有变量,并且由于您使用的是后期绑定,因此需要在使用它们之前分配 Word 常量(或者仅使用它们的数字枚举)。然后你可以使用如下代码:

Sub AnexoF_CPFL()
Dim xlSht As Worksheet, objWord As Object, objDoc As Object, Linha As Long, i As Long, StrPath As String
Const wdReplaceAll As Long = 2: Const wdFormatPDF As Long = 17
Linha = InputBox("Qual a linha do projeto?", "Gerar Anexo F CPFL")
StrPath = "C:\Users\Axis\Axis Renováveis Dropbox\Pasta da equipe Axis Renováveis\Axis Renovaveis Server\" & _
          "4 - Operações\1. Desenvolvimento\2. Prospecção\Consultas de Acesso\"
Set xlSht = ActiveSheet
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add(StrPath & "\Macros\Modelos\CPFL\AnexoF.dotx")
With objDoc
  With .Range.Find
    For i = 2 To 25
      .Text = xlSht.Cells(1, i).Value
      .Replacement.Text = xlSht.Cells(Linha, i).Value
      .Execute Replace:=wdReplaceAll
    Next
  .SaveAs2 Filename:=StrPath & "CPFL Paulista\Consultas\" & "Anexo F - " & xlSht.Cells(Linha, 2) & ".pdf", _
      FileFormat:=wdFormatPDF
  .Close
End With
objWord.Quit
Set arqAnexoF = Nothing: Set objWord = Nothing: Set xlSht = Nothing
MsgBox ("Anexo F CPFL gerado com sucesso!")
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.