1

Office 2013 を実行しています。Access データベースには、ODBC 経由で Oracle データベースにリンクされたテーブルが多数あります。パラメータ クエリを実行し、結果を Excel スプレッドシートにエクスポートし、スプレッドシートを差し込みデータ ソースとして設定して既存の Word 差し込みレターを開く Access モジュールがあります。さらに、後始末を整えるため、また潜在的なマルチユーザー競合を回避するために、スプレッドシートが作成されるたびに一意の名前が割り当てられ、マージが完了すると削除されます。このプロセスは、実行するたびに正常に機能しますが、実行するたびに、プログラムで処理する方法がわからないWordから多くのプロンプトが表示されるため、ユーザーはこのモジュールを実行するたびにこれらのプロンプトをクリックする必要がありません. それが私が助けを必要としているものです。

これが私のコードです(長すぎる場合は申し訳ありません、初めてのポスター)。解決する必要があるプロンプトは、コードの後に​​リストされています。

Option Compare Database
Option Explicit

Private Const sPath = "\\MyNetworkPath\Development\"       'development path
'Private Const sPath = "\\MyNetworkPath\"                  'production path

Public Sub RunMailMerge(dataFile As String, mergeFile As String)
On Error GoTo Sub_Error

    Dim sMergeFile As String
    Dim sDataFile As String
    Dim objWordDoc As Word.Document

    sDataFile = dataFile
    sMergeFile = mergeFile

    On Error GoTo Sub_Error
    Set objWordDoc = GetObject(sMergeFile, "Word.Document")

    objWordDoc.Application.Visible = True

    objWordDoc.MailMerge.OpenDataSource _
        Name:=sDataFile, ConfirmConversions:=False, _
        ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:="", SQLStatement:="", SQLStatement1:=""

    objWordDoc.MailMerge.Destination = wdSendToNewDocument

    objWordDoc.MailMerge.Execute

Sub_Exit:
On Error Resume Next
    ' save and close the merge template
    objWordDoc.Save
    objWordDoc.Close SaveChanges:=wdSaveChanges
    Set objWordDoc = Nothing
    ' clean up the merge data file
    AttemptToDeleteFile (sDataFile)

    Exit Sub

Sub_Error:
    If Err.Number = 432 Then
        MsgBox "ERROR: Invalid filename provided: '" & sDataFile & "' or " & _
        "'" & sMergeFile & "'."
    Else
        MsgBox Err.Description
    End If

    Resume Sub_Exit

End Sub

'attempt to delete the mailmerge data file
Private Sub AttemptToDeleteFile(strFilename As String)
On Error GoTo Sub_Error

    Kill strFilename

Sub_Exit:
    Exit Sub

Sub_Error:
    If Err.Number = 53 Then 'err 53 = file not found, that means the file is already deleted!
        'no error, continue
        Resume Sub_Exit
    ElseIf MsgBox("Cannot delete file.  Close all Word mailmerge documents and click Retry.", vbRetryCancel + vbExclamation, "File In Use") = vbRetry Then
        Resume
    Else
        On Error GoTo 0
        Err.Raise vbObjectError + 1024 + 1, "file in use", "File In Use@" & _
                    "Cannot complete the mailmerge process because the file '" & strFilename & "' " & _
                    "is in use.  Close all Word mailmerge documents and try again."
    End If

End Sub

Function OpenProjectAknowledgementLetter()
On Error GoTo OpenProjectAknowledgementLetter_Err

    Dim sDataFile As String
    Dim sMergeFile As String

    sDataFile = sPath & "Acknowledgement\ProjAckgtLtr_" & Format(Now(), "yyyymmddhhnnss") & ".xls"
    sMergeFile = sPath & "Acknowledgement\Acknowledgement_Merge_Letter.docx"

    Debug.Print "Data file: " & sDataFile
    'Debug.Print "Merge file: " & sMergeFile

    ' run the query and populate the data file for the merge letter
    DoCmd.OutputTo acOutputQuery, "qselProjectAknowledgementLetter", "Excel97-Excel2003Workbook(*.xls)", sDataFile, False, "", , acExportQualityPrint

    Call RunMailMerge(sDataFile, sMergeFile)

OpenProjectAknowledgementLetter_Exit:
    Exit Function

OpenProjectAknowledgementLetter_Err:
    MsgBox Error$
    Resume OpenProjectAknowledgementLetter_Exit

End Function

処理が必要な Word プロンプト:

このドキュメントを開くと、SQL コマンド [select statement] が実行されます。データベースからのデータがドキュメントに配置されます。続けたいですか?はい・いいえ

[はい] を選択すると、次のメッセージが表示されます。

[以前使用したデータ ソース ファイル名] が見つかりませんでした。移動、名前変更、または削除された可能性はありますか? わかった

[OK] をクリックすると、データ ソースを選択するためのファイルを開くダイアログ ボックスが表示されます。このダイアログで [キャンセル] をクリックすると、マージ ドキュメントに戻り、シート名が選択された [テーブルの選択] プロンプトが表示されます。

このプロンプトで [OK] をクリックすると、コード モジュールはそれ以上プロンプトを表示せずに続行できます。レターが新しいドキュメントにマージされ、マージ ドキュメントが保存されて閉じられ、データ ソース ファイルが削除されます。

明らかに、Word は新しく割り当てられたデータ ソース ファイルを受け入れ、マージを正常に完了しています。Word でこれらのプロンプトをすべてスキップして、作業を続行するにはどうすればよいですか?

4

0 に答える 0