[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定したレコードのみExcelからWordへ差込をするVBA』(VBA初心者)
指定したレコードのみExcelからWordへ差込をするVBAを作成したいと思っています。
自分なりに調べてみたのですが、「全データ」をレコード毎に保存or印刷するヒントなどは見つかったのですが、「指定したレコードのみ」というのはどうしたらよいのでしょうか。
どのようにしたらよいか、ご教示ください。
条件
(1)Excel(A.xlsx)と差込先のWord(B.docx)は同フォルダに保管
(2)Excelに差込をするレコードを指定するセルを設け、そのセルに記入したレコード番号のデータの差込を実行する
(3)差込されたWordは元のファイル名に「_(アンダーバー)」と「レコード番号」をつけて「B_レコード番号}.docx」として同フォルダもしくはデスクトップに保存
どうぞよろしくお願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
差込って、ワード文書をエクセルのデータを使って印刷する機能じゃ・・・。 だから、主はワードであって、エクセルではないと思うけど?? (BJ) 2019/07/10(水) 18:17
ただ、差し込み印刷をする元データはWordが制御できるように、Excelも含めて、他アプリで開いていない状態にしなきゃいけないという制限があったとおもいます。
なので、私の場合
【事前準備】
(A)Excelで元データを別名保存して複製をつくり、Wordが使う用のファイルを作っておく (B)Wordで(A)のファイルを使って差し込み印刷の設定を行う
【マクロ】
(1)必要に応じ(A)を更新する。(開きっぱなしにしないこと) (2)(B)のドキュメントを開く このとき、(A)が読み込まれる過程で確認メッセージがでてきて、 手作業で確認しないとOLE〜待機します的なメッセージが出てきたような。。 (3)Excel側で対象のレコード番号を調べて、Wordで当該レコードの差し込みを実行 (4)ドキュメントを「名前を付けて保存」する (5)(3)〜(4)を繰り返し (6)ドキュメントを閉じる。
みたいな感じにしたような気がします。
また、BJさんがおっしゃるように、差し込み印刷(レコード番号の指定)、ドキュメントの保存はWord側の機能なので、Wordのマクロの記録を使って調べたように記憶しています。
そして、ExcelVBA側でWordを参照設定しておくと、WordVBAをそのまま移植しても(辻褄が合えば)使えますから、そのようにしたような・・・・
自分がやったのが4〜5年前なので、もう忘れちゃいましたが、なんかのヒントになれば・・・
(もこな2) 2019/07/11(木) 02:37
1回の実行で1レコードということなら、差し込み印刷を使わないで
代わりにWord文書にブックマークを挿入しておき
こんな感じのマクロにするのが簡単だと思います。
1)Word文書を開く
2)Match関数で、対象レコードが、エクセルシートの何行目にあるかを検索
3)その行の各フィールドを、Word文書内のブックマーク位置に挿入を繰り返す
4)Word文書を名前を付けて保存
(マナ) 2019/07/11(木) 21:07
Option Explicit
Sub test() Dim wd As Object Dim doc As Object Dim fn As String Dim r As Range Const wdFormatXMLDocument As Long = 12 Const 文書名 = "B"
fn = ThisWorkbook.Path & "\" & 文書名 & ".docx"
Set wd = CreateObject("word.application") wd.Visible = True
Set r = ActiveCell.EntireRow
Set doc = wd.Documents.Add(fn) doc.bookmarks("BM1").Range.Text = r.Cells(2).Value doc.bookmarks("BM2").Range.Text = r.Cells(3).Value
fn = ThisWorkbook.Path & "\" & 文書名 & "_" & r.Cells(1).Value & ".docx" doc.saveas2 fn, wdFormatXMLDocument doc.Close wd.Quit
Set doc = Nothing Set wd = Nothing
End Sub
(マナ) 2019/07/13(土) 11:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.