エクセルに比べプログラミングの依頼を受けるケースが少なく情報も少ないワード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を削除なり移動なりをする事は出来ません。一旦ワードを閉じてから移動や削除を試して下さい。私の環境ではワードを閉じるだけでは足りず、パソコンの再起動をおこなってやっと削除が出来ました。
Σχόλια