[英]How to disable the MS Word “macro-free document” warning with code?
我有一个应用程序,动态插入VBA代码,以帮助构建具有适当书签的MS Word文档。 VBA代码不需要与文档本身一起保存。
保存文档时,会弹出以下警告(遗憾的是我无法发布图像),这会混淆应用程序的最终用户。 有没有办法在DocumentBeforeSave事件中禁用它?
**
以下内容无法保存在无宏文档中:VBA项目要使用这些功能保存文件,请单击“否”返回“另存为”对话框,然后在“文件类型”下拉列表中选择启用宏的文件类型。 继续保存为无宏文档? 按钮:[是] [否] [帮助]
**
一个想法是将文档的SaveFormat更改为旧格式,以防止弹出此警告。 但我不确定此更改是否会影响文档的行为,以及是否甚至可以在DocumentBeforeSave事件中修改此属性(该属性是READONLY属性)。
提前感谢您对此主题的任何帮助。
下面的代码将打开一个单词(假设存在c:\\ work \\ test.docx,这可能只是一个空白单词doc)。 如果单击文档doc上的“保存”按钮,将显示警告消息。 顺便说一下,我正在使用Office 2010。
<TestMethod()>
Public Sub testWord()
Dim wApp As New Word.Application()
Dim myDoc As Word.Document
Dim DataCodeModule As Object = Nothing
myDoc = wApp.Documents.Open("C:\Work\test.docx")
DataCodeModule = myDoc.VBProject.VBComponents(0).CodeModule
With DataCodeModule
.InsertLines(1, "Option Explicit")
.InsertLines(2, "Sub TestCode()")
.InsertLines(3, "Selection.InsertAfter ""test""")
.InsertLines(4, "End Sub")
End With
wApp.Visible = True
myDoc.Activate()
End Sub
一旦DocumentBeforeSave被连接起来,我希望以下代码将禁用该警告。 也许在文档打开后需要设置DisplayAlerts?
Public Sub App_DocumentBeforeSave(ByVal doc As Object, ByRef saveAsUI As Boolean, ByRef cancel As Boolean) Handles _officeHelper.DocumentBeforeSave
Dim WordApp As Object = this.WordApp()
'WordApp.DisplayAlerts = False
WordApp.DisplayAlerts = 0
End Sub
像这样?
Application.DisplayAlerts = wdAlertsNone
'~~> Your Save Code
Application.DisplayAlerts = wdAlertsAll
跟进
你是在vb.net上做的。 我目前无法访问VB.net,但下面的示例将为您设置正确的路径
打开Word并插入模块,然后粘贴此代码
Option Explicit
Dim MyClass As New Class1
Sub Sample()
Set MyClass.App = Word.Application
End Sub
现在插入一个类模块并粘贴此代码
Public WithEvents App As Word.Application
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, _
SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = wdAlertsNone
ActiveDocument.Save
Application.DisplayAlerts = wdAlertsAll
End Sub
现在,如果您按下保存按钮,您将注意到您将不再获得该警报。 :)
希望你能根据需要调整它:)
我只是完成了这段代码。 它会提示您保存并帮助您将其附加到电子邮件中。 它对我有用。 请试试。 我在表格顶部给了一个命令按钮。 谢谢
Private Sub CommandButton1_Click()
Dim whatfolder, whatfile As String
whatfolder = InputBox("Type folder name.. Don't type which drive")
whatfile = InputBox("Type file name you want to give")
ChangeFileOpenDirectory "C:\" & whatfolder
Application.DisplayAlerts = wdAlertsNone
ActiveDocument.SaveAs FileName:=whatfile & ".docx", FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:=False
Application.DisplayAlerts = wdAlertsNone
ActiveDocument.SendMail
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.