2012-05-30 89 views
1

我有一个应用程序动态插入VBA代码,以帮助建立一个适当的书签的MS Word文档。 VBA代码不需要与文档本身一起保存。如何使用代码禁用MS Word“无宏文档”警告?

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

**

下不能保存无宏的文档:VBA项目要 保存这些特征的文件,单击否返回到另存为 对话框,然后选择文件类型 下拉列表中启用宏的文件类型。继续保存为无宏文档? 按钮:[是] [否] [说明]

**

一个想法是文档的SaveFormat更改为一个较旧的格式,以防止此警告的弹出。但我不确定此更改是否会影响文档的行为方式,以及是否有可能在DocumentBeforeSave事件中修改此属性(该属性是READONLY属性)。

在此先感谢您对此主题的任何帮助。

下面的代码会打开一个单词(假设存在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 

而且一旦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 
+0

你能建立文档作为'New'文件,而不是使用一个代码是? – SeanC

回答

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 

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

希望你可以根据需要调整它:)

+0

这是一个好主意,但不幸的是将DisplayAlerts设置为false并不会阻止弹出的警告消息(只是测试它)... – Michael

+0

刚更新了上面的代码。请现在测试 –

+0

假设wdAlertsNone的值为0(我正在做后期绑定),这仍然不能防止警告消息出现。我试图把一个简单的代码放在这里。 – Michael

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