お世話になります。
フォームに記入し、作成したボタンを押すとテーブルに追加されるという流れの中に、
新規レコードの中で入力している日時、担当者名をWordへ差込したいと考えています。
(作成したボタンを押すと、現在ではテンプレのwordファイルをコピーしてくると同時にwordファイル名を日時にリネームしている、という流れです。VBAでコピー部分は書いております。)
完成形としてはボタンを押すだけでwordファイルのコピーとリネーム、wordファイル内に値の挿入が自動でされるというイメージなのですが、検索して調べると
・wordへの差し込み機能はあるが、レコードをすべて差し込む方法を説明しているページばかりである。
・VBAで記述する必要があるが、wordの機能で差し込む方法を解説したページばかりである。
とハードルが2つあるので、これを解決する方法が知りたいです。
詳しい方、教えていただけますと幸いです。
どうぞよろしくお願いいたします。
1.「レコードをすべて差し込む方法」で最後のレコード(新規レコード)だけを対象にする
2.作業テーブルを用意し「レコードをすべて差し込む方法」で、常に1レコードだけを対象にする
3.Word文章(テンプレートファイルのコピー)のテキストを直接置き換える
ゼロからWordの差し込み印刷を設定する方法も検索すれば見つかりそうですが必要ないですよね?
(2)は少し特殊ですが、それぞれ簡単な単語で検索して見つかったページをつまみ食いした程度で出来そうな内容です。それぞれメリット・デメリットはあります。どのような問題があり、どういった手法を望んでいるんですか?
ご回答ありがとうございます。
1→2→3の順で実行するという認識でおります。
作業テーブル(中間テーブル)を用意するという方法は思いつきませんでした。プログラム実行の都度上書きするということで対応しました。1レコードだけを対象にするのはSELECT TOP1でいけました。
https://oshiete.goo.ne.jp/qa/7681553.html
あたりを参考に差し込み部分のVBAを書こうと考えております。
ありがとうございました。
もっと基本的なことの確認が漏れていたんですが
差し込み印刷用のデータ ソースとしてテーブルやクエリを使用する
(
SELECT TOP1
のような)静的なクエリが組めるのであればそのままデータソースにできるのでは?ついでにサンプルを組んでいたらいろいろハマったのでその辺の情報を追記しておきます
Word文書に差し込みの設定をしておくと、ファイルを開く時に確認ダイアログ(「この文書を開くと、次の SQL コマンドが実行されます。」)が表示されます
回避方法としてレジストリを修正する方法がありますが、影響範囲が大きく望ましくありません。書式の設定だけしたWordファイルを用意して、データソースは動的に読み込むとよさそうです
MailMerge.OpenDataSource メソッド (Word)
一度差し込み設定をしたWord文書を作成したら、差し込み印刷の開始→標準の Word 文書でデータのリンクを解除して保存しなおします(開いてもダイアログの出ない文書にする)
都度ACCESS VBAからWord文書を開く→データソースのリンクをします
上記リンク先では
とありますが、hirotonの環境(office 2013)ではうまくいきませんでした。サンプルのコードではファイル指定が
.mdb
なので、古い形式でないとダメなのかもしれませんまた、
Provider=Microsoft.ACE.OLEDB.12.0;
この指定部分はACCESSのバージョンによって変わる可能性があります