top of page
執筆者の写真伊賀上真左彦

ワード本体にVBAを組み込む

更新日:9月23日

エクセルに比べプログラミングの依頼を受けるケースが少なく情報も少ないワードVBA。本日はワード内の表内のデータを読み書きするVBAをワード本体に組み込む方法をご紹介します。


使用したプログラム

Sub ワード内の表からデータ読み書き()
Dim doc As Document
Dim tbl As Table
Dim cell As cell
Dim msg As String
Dim セルの値 As String
Dim i As Long
i = 0
' 現在の文書を設定
Set doc = ActiveDocument
    
' 文書内のすべての表をループ
For Each tbl In doc.Tables
    ' 各セルの内容を取得
    For Each cell In tbl.Range.Cells
        i = i + 1
        '改行マークを除去しつつセルの値を取得
        セルの値 = Replace(cell.Range.Text, Chr(13) & Chr(7), "")
        Debug.Print i & "_" & セルの値
        'セルに値を書き込み
        cell.Range.Text = i
    Next cell
Next tbl
End Sub

ワードの表はエクセルの表とは異なり。3×5といった格子状ではない場合がほとんどです。そのため処理が面倒な面がありますが、このプログラムはほとんどの形状の表に対応しています。


先ほどのプログラムをワード内に保存する方法


ワード本体にVBAを組み込む場合、Normalを選択し挿入>標準モジュールとクリック、挿入されたModule1等をクリックしてその中に貼り付けます。


貼り付けたら、ファイル>Normalの上書き保存、で保存完了です。




ここで上書きがうまく行かない場合、以下の方法を試して下さい。


前提条件

・ワードのVBAをワード本体に保存する場合、マクロ入りテンプレートファイル内に保存されます。

・マクロ入りテンプレートファイルは、ワードを開いた際、1つだけ自動で取り込まれます。そのファイル名はデフォルトではNormalです。

・テンプレートファイルは通常、Nornalというファイル名で、以下の場所に保存されている(ユーザー名はご自分のものになります)。


・新しいプログラムを追加した場合、Normalを上書き保存すれば良いが、環境によっては上書き禁止になっている場合がある。

・その場合、いったん別の名前でマクロ入りテンプレートファイルを保存し、その後そのファイル名をNormalに変更する、という方法を使える。


テンプレートファイルの保存方法

プログラムを貼り付けた状態でファイル→コピーを保存→ファイル形式としてマクロ入りテンプレートファイルを選択→保存場所として先ほどのテンプレートファイル置き場を選択→ファイル名としてNormalを選択→保存。


仮に保存できない場合、Normal2などの名前でいったん保存。後ほどエクスプローラーでこのフォルダーを開き、Normalを削除、Normal2のファイル名をNormalに変更してください。


ワードを開いている状態ではNormalを削除なり移動なりをする事は出来ません。一旦ワードを閉じてから移動や削除を試して下さい。私の環境ではワードを閉じるだけでは足りず、パソコンの再起動をおこなってやっと削除が出来ました。

Comments


bottom of page