hiroton
2022/02/09 (水) 10:17:19
0741c@f966d
もっと基本的なことの確認が漏れていたんですが
差し込み印刷用のデータ ソースとしてテーブルやクエリを使用する
(SELECT TOP1
のような)静的なクエリが組めるのであればそのままデータソースにできるのでは?
ついでにサンプルを組んでいたらいろいろハマったのでその辺の情報を追記しておきます
Word文書に差し込みの設定をしておくと、ファイルを開く時に確認ダイアログ(「この文書を開くと、次の SQL コマンドが実行されます。」)が表示されます
回避方法としてレジストリを修正する方法がありますが、影響範囲が大きく望ましくありません。書式の設定だけしたWordファイルを用意して、データソースは動的に読み込むとよさそうです
MailMerge.OpenDataSource メソッド (Word)
一度差し込み設定をしたWord文書を作成したら、差し込み印刷の開始→標準の Word 文書でデータのリンクを解除して保存しなおします(開いてもダイアログの出ない文書にする)
都度ACCESS VBAからWord文書を開く→データソースのリンクをします
Dim wordFilePath As String
Dim objWord As Object
Dim objDoc As Object
wordFilePath = "C:\データ\さしこみ.docx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open(wordFilePath)
Dim accessFilePath As String
Dim strConnection As String
Dim strSQL As String
accessFilePath = Application.CurrentProject.FullName
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & accessFilePath & ";"
strSQL = "SELECT * FROM `qさしこみ用`"
With objDoc.MailMerge
.OpenDataSource _
Name:=accessFilePath, _
LinkToSource:=True, _
Connection:=strConnection, _
SQLStatement:=strSQL
.ViewMailMergeFieldCodes = False
End With
Set objDoc = Nothing
Set objWord = Nothing
上記リンク先では
Access のデータを検索する場合は、文字列 "Table" または "Query" の後にテーブルまたはクエリの名前を指定します。
とありますが、hirotonの環境(office 2013)ではうまくいきませんでした。サンプルのコードではファイル指定が.mdb
なので、古い形式でないとダメなのかもしれません
また、Provider=Microsoft.ACE.OLEDB.12.0;
この指定部分はACCESSのバージョンによって変わる可能性があります
通報 ...