オフィスワーク・事務あるある!VBAでExcelからWordに値を入力する方法【サンプル有り】

はじめに

前回の記事ではExcelのVBAマクロからWord文書ファイルを開くところまでご説明しました。

ただ、ファイルを開くだけでは芸がないと言うか、意味がないというか。。

開いたからにはなにか意味のある操作をして初めてVBAマクロを使っている意味があると言えるのではないでしょうか?せっかくVBAマクロの勉強をするのですから、意味のある処理を実行させたいものです。

VBAでExcelからWordに値を入力を紹介する本記事の目的

本記事ではVBAマクロからWord文書ファイルを開き、Excelの一覧の内容をWord文書に入力するVBAマクロを作成することを考えます。顧客管理などのデータ管理をExcelファイルで管理して、個別の文書をWordで作成するというオフィスワーク、事務処理でよくあるパターンを想定しています。

この処理を実行することができるようになればExcelからWordにデータをコピペする不毛な作業から開放されるかもしれません。

VBAでExcelからWordに値を入力を実行する処理の流れ

処理の流れとして、前回作成したExcelからWordファイルを開く処理が基本となります。この処理を行ったあとにExcel側の一覧表から所定の値を変数に格納して、Wordファイルの特定の文字列と置換することで、値をExcleからWordに飛ばす処理を実現しています。

Excel側の一覧から注文者名を取得し、Wordに予め用意されたテンプレート文書の「注文者」の部分に転送しています。

Excel顧客管理一覧

Wordで用意した帳票テンプレート

Wordテンプレートの「注文者」にExcel一覧表の注文者名を挿入

今回はあくまでサンプルなので一項目のみの転送ですが、一覧の内容を全て転送して帳票を保存(あるいは印刷)するVBAマクロなどを作成することも下記サンプルを少し改良するだけでできると思われます。

VBAでExcelからWordに値を入力に使用する関数・プロパティなど

objSelection.Find

指定した文字列を検索したり、置き換えたりするメソッドを持つobjSelectionオブジェクトです。
詳しくはリンクのUsageを御覧ください。
使いこなすことができると大変便利です。特にWordの場合、ExcelのようにCellやRangeで明確に部分を指定できないので、置換をうまく使うことでExcelからWordに値を転送しているかのような処理を実行することができます。

VBAでExcelからWordに値を入力のサンプルコード

Sub OpenWord()

	Dim myword As Word.Application	        'WordApplicationオブジェクトを宣言
	Set myword = CreateObject("Word.Application")  'WordApplicationオブジェクト作成
	myword.Visible = True              'WordApplicationオブジェクトを可視化
	'指定のパスにある MyWord01.docx Wordオブジェクトを開く
	Set mydoc = myword.Documents.Open(ThisWorkbook.Path & "\MyWord01.docx")

	'ここからが前回からの追加処理分です
	Dim name As String
	name = Range("B3")
    
	Set objSelection = appWD.Selection
        
        objSelection.Find.Text = "注文者"
        objSelection.Find.Replacement.Text = name
        objSelection.Find.Execute , , , , , , , , , , 2

	


End Sub

終わりに

ExcelからWordに値を転送する事ができるようになると、VBAマクロを勉強したことを実感できるのではないかと思います。この処理をベースにして、普段仕事で使っている一覧表や帳票をVBAマクロで自動化するアイディアが思い浮かんだでしょうか?VBAマクロを勉強することで、実は日常の仕事には自動化できる部分がたくさんあるということにだんだん気がついてくるはずです。