首页 > 解决方案 > Excel 到 Word VBA 导出 - 未创建 Word 文档

问题描述

我正在运行 Excel 到 Word 导出,我无法根据模板创建/保存新文档。每个循环都会重新打开单词模板,替换模板中的 <<>> 值,然后继续下一个。

(背景 - 我在 Excel 中有一个包含 32 行和 70 列的表。我创建了一个相应的 word 模板,其中包含要从 excel 表中替换的值(例如,<>)。在运行时,它导出值基于Excel 工作表中对应的标签(例如,<>)到 Word Doc)。它似乎一直在工作,直到它到达 WordDoc.SaveAs Filename

我得到的错误是

是否要将文档另存为模板名称?是/否

它停在那里并且不创建模板,而只是更改模板文件。

任何人都可以建议解决这个问题吗?

Sub CreateWordDoc()
Dim BenefitRow, BenefitCol, LastRow As Long
Dim TagName, TagValue, Filename As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim WordContent As Word.Range
On Error Resume Next
With Sheets("VBA Output")


Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True 'Make visible



LastRow = .Range("A9999").End(xlUp).Row 'Determine last row
For BenefitRow = 4 To 6
Set WordDoc = WordApp.Documents.Open(Filename:=" template name.dotm", ReadOnly:=False) 'Open Template saved as .dotm
For BenefitCol = 1 To 79
TagName = .Cells(3, BenefitCol).Value 'Tag Name
TagValue = .Cells(BenefitRow, BenefitCol).Value 'Tag Value
With WordDoc.Content.Find
.Text = TagName
.Replacement.Text = TagValue
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll ',Forward:True, Wrap:wdFindContinue

End With
Next BenefitCol

Filename = ThisWorkbookPath & "\" & .Range("E" & BenefitRow).Value & ".docx"
WordDoc.SaveAs Filename
WordDoc.Close

Next BenefitRow
End With
WordApp.Quit

End Sub

标签: vbams-word

解决方案


您看到的问题(错误消息)来自打开模板文件,然后想要将其保存为“普通香草”文档。这不是 Word 的设计用途,这就是为什么 Word 基本上是在说:“你确定这就是你想要做的吗?”

除非目的是更改模板本身,否则不应打开模板。在这种情况下,它将再次保存为模板 - 不会显示任何消息。

从模板创建新文档时,请使用以下Documents.Add方法:

Set WordDoc = WordApp.Documents.Add(Template:=" template name.dotm") 

这会自动创建模板的副本- 没有覆盖模板的危险。SaveAs并且执行该方法时不会出现问题中提到的消息。


推荐阅读