5

我用 VBA 代码和用户表单创建了一个模板。我将其保存为 .dotm(启用宏的模板)。

我想打开模板,使用界面在文档中进行更改,然后将文档另存为 .docx 而不引用模板/代码。当我打开 docx 并打开 Visual Basic 编辑器时,我在那里找到了代码。

这是我退出界面的代码

Private Sub Sair_Click()
ActiveDocument.Bookmarks("NomeProj").Range.text = Nomeproj.Value
ActiveDocument.TablesOfContents(1).Update
Application.Quit

End Sub
4

2 回答 2

2
ActiveDocument.SaveAs FileName:="Test.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="",
AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False

 ActiveDocument.Convert 'Required if not Word 2007 format

编辑:

VBA 代码也被存储。如果你想防止这种情况发生,你能做的最好的就是将你的文本移动到一个新文档中并保存这个文档。
简单的例子,基于书签的存储:

Option Explicit

Sub Save_Doc_NoMacros()

Dim ThisDoc         As Word.Document
Dim oDoc            As Word.Document


Set ThisDoc = ActiveDocument

ThisDoc.Bookmarks("Bookmark1").Select
Selection.Copy
Set oDoc = Documents.Add
Selection.Paste

oDoc.SaveAs FileName:="U:/Text.docx", FileFormat:=wdFormatDocument
oDoc.Close

End Sub
于 2013-01-23T11:51:33.673 回答
0

docx 文件不能包含任何 VBA 代码。时期。但是,每个 docx 文件都可以访问它所附加的任何模板中的任何代码。默认情况下,当您从模板创建新文档时,该文档会附加到该模板。如果您不希望生成的 docx 文件进一步访问其附加模板中的 VBA,请将其附加到合适的 dotx 模板。假设您有这样的 dotx 模板,您可以通过 Developer|Document Template>Templates>Attach 或通过 AttachedTemplate 方法来实现。

于 2019-04-21T05:11:33.507 回答