3

ユーザーのためにシステムを可能な限り自動化したいと考えています。現在、ユーザーがボタンをクリックすると実行されるコードがあります。このコードは、差し込み印刷を介して Word 文書に適用することを意図してデータを取得します。

というメッセージが常に表示されることを除いて、すべてが意図したとおりに機能します

このドキュメントを開くと、次の SQL コマンドが実行されます。

* FROM 'TAGS$' を選択

データベースからのデータがドキュメントに配置されます。続けたいですか?

ユーザーが混乱して「いいえ」を選択する危険を冒すことなく、これをできるだけ単純にする必要があります。「はい」を選択した場合と同様に、VBA はどのようにしてデータの配置を自動的に続行して受け入れることができますか?

次のコードを使用してアラートをブロックしようとしましたが、デフォルトで「はい」になって続行されることを期待していましたが、うまくいきませんでした。

Application.DisplayAlerts = False

これは私が持っているものです

Sub RunMailMerge()

    Application.ScreenUpdating = False

    Dim wdOutputName, wdInputName As String
    wdOutputName = ThisWorkbook.Path & "\nametags - " _
        & Format(Date, "d mmm yyyy")
    wdInputName = ThisWorkbook.Path & "\nametags.docx"

    ' open the mail merge layout file
    Dim wdDoc As Object
    Set wdDoc = GetObject(wdInputName, "Word.document")
    wdDoc.Application.Visible = True

    With wdDoc.MailMerge
         .MainDocumentType = wdFormLetters
         .Destination = wdSendToNewDocument
         .SuppressBlankLines = True
         .Execute Pause:=False
    End With

    'Application.ScreenUpdating = True

    'show and save output file
    wdDoc.Application.Visible = True
    wdDoc.Application.ActiveDocument.SaveAs wdOutputName

    ' cleanup
    wdDoc.Close SaveChanges:=False
    'activedoc.Close
    Set wdDoc = Nothing

End Sub
4

2 に答える 2

2

WordでDisplayAlertsプロパティを設定してみてください(アラートの送信元である場合)。

Dim tmp as Long

tmp = wdDoc.Application.DisplayAlerts 

wdDoc.Application.DisplayAlerts = wdAlertsNone
'do the action which causes the prompt
wdDoc.Application.DisplayAlerts = tmp
于 2012-07-02T23:19:07.630 に答える