簡體   English   中英

如何使用代碼禁用MS Word“無宏文檔”警告?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM