【ExcelVBA】CSVファイルのデータをWordファイルに出力して保存するには

この記事では、CSVファイルのデータをWordファイルに出力して保存する方法についてご説明します。

【動画】Excelのシートの表をそのままWordに出力して保存する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


ExcelのマクロがWordのファイルを開き、Excelのシートの表をそのままWordに出力しています。

マクロ作成の流れ

STEP.1
Wordファイルを開き、Wordの機能にアクセスできるインスタンスを生成する
Wordファイルを開き、Wordの機能にアクセスできるインスタンスを生成します。
STEP.2
CSVファイルを開く
CSVファイルを開きます。
STEP.3
CSVファイルのデータをWordファイルに書き込む
CSVファイルのデータをWordファイルに書き込みます。

CSVファイルとWordファイルの例

CSVファイル

今回は以下のCSVファイルを用意しました。

項目名とデータが20行存在しているCSVファイルです。

Wordファイル

今回は以下のWordファイルを用意しました。

以上のWordファイルにCSVファイルのデータを出力します。

マクロを実行すると結果、以下のとおりにCSVファイルのデータがWordファイルに出力されます。

コードの例

Option Explicit

Sub test()

    Dim CSVFilePath As String   'CSVファイルのフルパス用変数
    Dim WordApp     As Object   'Wordアプリケーションインスタンス用変数
    Dim WordDoc     As Object   'Word文書インスタンス用変数
    Dim RowData     As String   'CSVファイルのデータ(1行)
    Dim OrgnlVwType As Long     '元の表示モードを保存する変数
    
    'CSVファイルのフルパスを取得する
    CSVFilePath = ThisWorkbook.Path & "\data.csv"
        
    'Wordアプリケーション用インスタンスを生成する
    Set WordApp = CreateObject("Word.Application")
    
    'Wordファイルを表示しない
    WordApp.Visible = False
    
    'Wordファイルを開く
    Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\0293.docx")

    '現在設定されているWordファイルの表示モードの設定値を取得する(最後に元の表示モードに戻すため一旦ここで保持しておく)
    OrgnlVwType = WordApp.ActiveWindow.View.Type

    'CSVファイルの書き込みをするため、Wordファイルの表示モードを「編集」モードに切り替える
    WordApp.ActiveWindow.View.Type = 1

    'CSVファイルを開く
    Open CSVFilePath For Input As #1

    'CSVファイルの終端まで読み込むためのDoループ(終端まで達したらループを抜ける)
    Do Until EOF(1)
    
        'CSVファイルから1行データを読み込んで変数RowDataに格納する
        Line Input #1, RowData
        
        '変数RowDataの値をWordファイルに書き込む
        WordApp.Selection.TypeText Text:=RowData
        
        'Wordファイルに改行を挿入する
        WordApp.Selection.TypeParagraph
        
    Loop

    'CSVファイルを閉じる
    Close #1

    'Wordのファイルを保存する
    WordDoc.Save

    'Wordのファイルの表示モードを元に戻す
    WordApp.ActiveWindow.View.Type = OrgnlVwType

    'Wordのファイルを閉じる
    WordApp.Quit

    '後処理
    Set WordApp = Nothing
    Set WordDoc = Nothing

End Sub

注目すべきコード①

最初に見て頂きたいのは12行目です。

    'CSVファイルのフルパスを取得する
    CSVFilePath = ThisWorkbook.Path & "\data.csv"

コードの説明

以上のコードは、CSVファイルのフルパスを取得しているコードです。

注目すべきコード②

次に見て頂きたいのは15行目です。

    'Wordアプリケーション用インスタンスを生成する
    Set WordApp = CreateObject("Word.Application")

コードの説明

以上のコードは、Wordアプリケーション用インスタンスを生成するコードです。

このインスタンスを生成することでWordが起動されて操作することができるようになります。

今回はWordファイルを開いたりCSVファイルのデータをWordファイルに書き込んだり、Word自体を終了させるなどの操作を行うのに使います。

注目すべきコード③

次に見て頂きたいのは18行目です。

    'Wordファイルを表示しない
    WordApp.Visible = False

コードの説明

以上のコードは、Wordの画面を非表示にするコードです。

Trueの場合はWordが表示されたままの状態になります。

注目すべきコード④

次に見て頂きたいのは21行目です。

    'Wordファイルを開く
    Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\0293.docx")

コードの説明

以上のコードは、Wordファイルを開く処理のコードです。

OpenメソッドにExcelのシートの表を出力したいWordファイルのフルパスを指定して実行することで、そのWordファイルが開きます。

注目すべきコード⑤

次に見て頂きたいのは24行目から27行目です。

    '現在設定されているWordファイルの表示モードの設定値を取得する(最後に元の表示モードに戻すため一旦ここで保持しておく)
    OrgnlVwType = WordApp.ActiveWindow.View.Type

    'CSVファイルの書き込みをするため、Wordファイルの表示モードを「編集」モードに切り替える
    WordApp.ActiveWindow.View.Type = 1

コードの説明

以上のコードは、現在設定されているWordファイルの表示モードの設定値を取得し、その後にWordファイルの表示モードを「編集」モードに切り替える処理のコードです。

なぜ表示モードを「編集」モードに切り替えるのかというと、表示設定が「閲覧モード」でWordファイルが保存されている場合、エラーになってしまうからです。(CSVファイルのデータをWordファイルに書き込む時)

以上のエラーを回避するために、CSVファイルの書き込みをする前にWordファイルの表示モードを「編集」モードに切り替えますが、設定を戻せるよう現在設定されているWordファイルの表示モードの設定値を取得しておきます。(設定値は変数OrgnlVwTypeに格納する)

注目すべきコード⑥

次に見て頂きたいのは30行目から47行目です。

    'CSVファイルを開く
    Open CSVFilePath For Input As #1

    'CSVファイルの終端まで読み込むためのDoループ(終端まで達したらループを抜ける)
    Do Until EOF(1)
    
        'CSVファイルから1行データを読み込んで変数RowDataに格納する
        Line Input #1, RowData
        
        '変数RowDataの値をWordファイルに書き込む
        WordApp.Selection.TypeText Text:=RowData
        
        'Wordファイルに改行を挿入する
        WordApp.Selection.TypeParagraph
        
    Loop

    'CSVファイルを閉じる
    Close #1

コードの説明

以上のコードは、CSVファイルを開いてCSVファイルのデータをWordファイルに出力し、出力し終わったらCSVファイルを閉じる処理のコードです。

コードの詳細

30行目のコードでは、CSVファイルを開きます。

33行目のコードは、CSVファイルの終端まで読み込むためのDoループで、終端まで達したらループを抜けます。

36行目のコードでは、CSVファイルから1行データを読み込んで変数RowDataに格納しています。

39行目のコードでは、変数RowDataの値をWordファイルに書き込みます。

CSVファイルのデータを1行書き込んだら改行させたいので、42行目のコードではWordファイルに改行を挿入します。

47行目のコードでは、CSVファイルを開じます。

注目すべきコード⑦

次に見て頂きたいのは50行目から56行目です。

    'Wordのファイルを保存する
    WordDoc.Save

    'Wordのファイルの表示モードを元に戻す
    WordApp.ActiveWindow.View.Type = OrgnlVwType

    'Wordのファイルを閉じる
    WordApp.Quit

コードの説明

以上のコードは、Wordファイルの保存、表示モードの設定の戻し、Wordの終了の処理のコードです。

コードの詳細

50行目のコードでは、Wordファイルを保存します。

53行目のコードでは、Wordファイルの表示モードの設定値を元に戻します。

56行目のコードでは、Wordを終了します。

動作確認

CSVファイルとWordファイルの例」をご覧ください。

最後に

この記事では、CSVファイルのデータをWordファイルに出力して保存する方法についてご説明しました。

CSVファイルのデータをWordファイルに出力して保存したい場合は本記事を参考にして頂けたら幸いです。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら