Excelに記入した文字をword文書に自動で入力する方法を紹介します。フォルダー、ファイルを選んで、ExcelからWordに文字を入れて保存します。
目次
完成イメージ

代入する文字を入れたExcelを用意する。(ファイル名、保存先は自由)
代入する先のWordを用意する。(ファイル名、保存先は自由)
VBAコード
Sub word文書に差し込み好きな場所へ保存()
'元になるWordのパスを取得する
Dim FilePath
MsgBox ("元になるwordファイルを選んでください")
FilePath = Application.GetOpenFilename 'ファイルを指定するダイアログを表示します
If FilePath = False Then Exit Sub '設定しない場合は、終了します
Debug.Print FilePath
'保存先のパスを取得する
Dim saveFilePath
MsgBox ("保存先フォルダを選んでください")
Application.FileDialog(msoFileDialogFolderPicker).Show 'ShowメソッドでFileDialogオブジェクトを表示する
saveFilePath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) 'ファイルを指定するダイアログを表示します
If saveFilePath = False Then Exit Sub '設定しない場合は、終了します
Debug.Print saveFilePath
'最終行を取得。"last"に最終行を代入
Dim last As Long
last = Cells(Rows.Count, "B").End(xlUp).Row 'これは最終行を取得するための呪文(B列の最終行)
Debug.Print last
'Wordを開いて入力
Dim str As String
Set myword = CreateObject("word.application") 'mywordという言葉にwordオブジェクトへの参照を付与(wordを制御できるようになる。)
myword.Visible = True 'wordの画面を表示する。Visibleプロパティ
Set mydoc = myword.documents.Open(FilePath) '先に選択したwordファイルを開ける(DocmentsコレクションのOpenメソッド)
For y = 1 To last 'For~Nextで繰り返す
str = Cells(y, 1)
str.Copy 'Excelの文字をコピー
mydoc.Paragraphs(5).Range.Paste 'wordの5行目にExcelの文字を貼り付ける
mydoc.SaveAs FileName:=saveFilePath & "\" & str 'wordの名前をつけて保存する
Next
mydoc.Close 0
myword.Quit 'Quitメソッドでwordを終了
End Sub
解説
ポイント
使用者にWordファイルとExcelファイルを選択させる。(FileDialogプロパティ)
Excelファイルの最終行を取得(Endプロパティ)
Wordを開いて、Excel内の文字をWordへ入れる(Create Object関数)
繰り返す。(For~Nextステートメント)
File Dialogプロパティ
ダイアログボックスを表示して、ユーザにフォルダを選択させる方法はいくつかあります。ここではApplicationオブジェクトのFileDialogプロパティを使った方法を紹介します。
Application.FileDialogは、ファイル操作のためのダイアログボックスを表すFileDialogオブジェクトを返すプロパティです。
FileDialogプロパティ → FileDialogオブジェクトを返す
書式:Applicationオブジェクト.FileDialog(ダイアログボックスの種類)
解説:ダイアログボックスの種類で指定したダイアログボックスのFileDialogオブジェクトを消します。ダイアログボックスの種類は、次の定数で指定します。
FileDialogプロパティで指定できる定数
種類 | 定数 | 値 |
ファイルを選択 | msoFileDialogFilePicker | 3 |
フォルダを選択 | msoFileDialogFolderPicker | 4 |
ファイルを開く | msoFileDialogOpen | 1 |
ファイルを保存 | msoFileDialogSaveAs | 2 |
そして、取得したFileDialogオブジェクトのShowメソッドでダイアログボックスを画面表示します。
コメント