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

时间:2012-05-30 17:29:13

标签: vba ms-word word-vba

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

保存文档时,会弹出以下警告(遗憾的是我无法发布图像),这会混淆应用程序的最终用户。有没有办法在DocumentBeforeSave事件中禁用它?

**

  

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

**

一个想法是将文档的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

2 个答案:

答案 0 :(得分:3)

喜欢这个吗?

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

现在,如果您按下保存按钮,您会发现您不会再收到该警报。 :)

希望你能按要求调整它:)

答案 1 :(得分:0)

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

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