私は、Access データベースの VBA コードから呼び出された差し込み印刷でいくつかのメールを生成する Access データベースに取り組んでいます。問題は、新しい Word 文書を開いて差し込み印刷 (VBA) を開始すると、Word が同じ Access データベース (既に開いている) を開いてデータを取得することです。これを防ぐ方法はありますか?すでに開いているデータベースのインスタンスが使用されるようにするには?
いくつかのテストの後、私は奇妙な動作を取得します: SHIFT キーを保持している Access データベースを開くと、差し込み印刷は同じデータベースの他の Access インスタンスを開きません。キーを保持せずに Access データベースを開くと、説明されている動作が発生します。
私の差し込み印刷VBAコード:
On Error GoTo ErrorHandler
Dim word As word.Application
Dim Form As word.Document
Set word = CreateObject("Word.Application")
Set Form = word.Documents.Open("tpl.doc")
With word
word.Visible = True
With .ActiveDocument.MailMerge
.MainDocumentType = wdMailingLabels
.OpenDataSource Name:= CurrentProject.FullName, ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
SQLStatement:="[MY QUERY]", _
SQLStatement1:="", _
SubType:=wdMergeSubTypeWord2000, OpenExclusive:=False
.Destination = wdSendToNewDocument
.Execute
.MainDocumentType = wdNotAMergeDocument
End With
End With
Form.Close False
Set Form = Nothing
Set word = Nothing
Exit_Error:
Exit Sub
ErrorHandler:
word.Quit (False)
Set word = Nothing
' ...
End Sub
すべてAccess / Word 2003で行われます。
更新 #1 Shift キーを使用して Access を開く場合と使用しない場合の正確な違いを誰かが教えてくれると助かります。また、「機能」を有効にする VBA コードを記述できる場合は、SHIFT キーを使用せずにデータベースを開くと、少なくともそれを「シミュレート」します。
乾杯、グレゴール