Vba 如何使用代码禁用MS Word“无宏文档”警告?

Vba 如何使用代码禁用MS Word“无宏文档”警告?,vba,ms-word,Vba,Ms Word,我有一个动态插入VBA代码的应用程序,可以帮助构建带有适当书签的MS word文档。VBA代码不需要与文档本身一起保存 保存文档时,将弹出以下警告(很遗憾,我无法发布图像),这会使应用程序的最终用户感到困惑。是否有办法在DocumentBeforeSave事件中禁用此功能 ** 以下内容无法保存在无宏文档中:VBA项目到 使用这些功能保存文件,单击“否”返回“另存为” 对话框,然后在“文件类型”对话框中选择启用宏的文件类型 下拉列表。是否继续保存为无宏文档? 按钮:[是][否][帮助] ** 一

我有一个动态插入VBA代码的应用程序,可以帮助构建带有适当书签的MS word文档。VBA代码不需要与文档本身一起保存

保存文档时,将弹出以下警告(很遗憾,我无法发布图像),这会使应用程序的最终用户感到困惑。是否有办法在DocumentBeforeSave事件中禁用此功能

**

以下内容无法保存在无宏文档中:VBA项目到 使用这些功能保存文件,单击“否”返回“另存为” 对话框,然后在“文件类型”对话框中选择启用宏的文件类型 下拉列表。是否继续保存为无宏文档? 按钮:[是][否][帮助]

**

一个想法是将文档的SaveFormat更改为较旧的格式,以防止出现此警告。但我不确定此更改是否会影响文档今后的行为,以及是否可以在DocumentBeforeSave事件中修改此属性,该属性是否为只读属性

提前感谢您对本主题的任何帮助

下面的代码将打开一个单词,假设存在c:\work\test.docx,它可能只是一个空白单词doc。如果您点击word文档上的保存按钮,则会显示警告消息。顺便说一句,我正在使用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
像这样

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
现在插入一个类模块并粘贴此代码

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
现在,如果按“保存”按钮,您将注意到不再收到该警报:

希望您能根据需要进行调整:

像这样吗

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
现在插入一个类模块并粘贴此代码

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
现在,如果按“保存”按钮,您将注意到不再收到该警报:


希望您可以根据需要修改它:

我只是简单地完成了这段代码。它将提示您保存并帮助您将其附加到电子邮件。 这对我有用。 请试一试。我在纸的顶部按了一个命令按钮。 谢谢


我只是完成了这个代码。它将提示您保存并帮助您将其附加到电子邮件。 这对我有用。 请试一试。我在纸的顶部按了一个命令按钮。 谢谢


您能否将文档构建为新文档,而不是使用代码所在的文档?您能否将文档构建为新文档,而不是使用代码所在的文档?这是一个好主意,但不幸的是,将DisplayAlerts设置为false并不能阻止弹出警告消息,只是对其进行了测试…假设wdAlertsNone的值为0,我正在进行后期绑定,这仍然不能阻止出现警告消息。我想把一个简单的代码放在这里,这很奇怪。我刚试过,效果很好。我想我会等待您的示例代码。`Public Sub testWord Dim wApp As New Word.Application Dim myDoc As Word.Document Dim datacodemule As Object=Nothing myDoc=wApp.Documents.OpenC:\Work\test.docx datacodemule=myDoc.VBProject.VBComponents0.codemule With datacodemule.InsertLines1,Option Explicit.InsertLines2,Sub TestCode.InsertLines3,Selection.InsertAfter test.InsertLines4,End Sub End With wApp.Visible=True myDoc.Activate End Sub'很难阅读。您可以编辑您的问题并将此代码粘贴到那里吗?这是一个好主意,但不幸的是,将DisplayAlerts设置为false并不能阻止弹出警告消息,只是测试了它…假设wdAlertsNone的值为0,我正在进行后期绑定,这仍然不能阻止出现警告消息。我想把一个简单的代码放在这里,这很奇怪。我刚试过,效果很好。我想我会等待您的示例代码。`Public Sub testWord Dim wApp As New Word.Application Dim myDoc As Word.Document Dim datacodemule As Object=Nothing myDoc=wApp.Documents.OpenC:\Work\test.docx datacodemule=myDoc.VBProject.VBComponents0.codemule With datacodemule.InsertLines1,Option Explicit.InsertLines2,Sub TestCode.InsertLines3,Selection.InsertAfter test.InsertLines4,End Sub End With wApp.Visible=True myDoc.Activate End Sub'很难阅读。您可以编辑您的问题并将此代码粘贴到那里吗?