Wordで作成した日付と担当者の表に、指定した名前リストを自動で割り当てる処理をVBAで作ってみました。
毎回同じような名前を手入力していた作業を、一発で自動化できる便利なコードをご紹介いたします。
実現したいこと
- Wordのテーブルの担当者列(2列目)に、名前リストを順に表示したい
- すでに入力されている名前(例:2行目2列目)を基準に、その次の名前からリストを開始
- 名前リストが最後まで行ったら、先頭に戻って繰り返すようにしたい
テーブル構成イメージ
日付 | 担当者 |
---|---|
11月27日 | 森 |
12月1日 | |
12月11日 | |
12月22日 | |
12月29日 | |
1月7日 | |
1月13日 | |
1月20日 |
このような形式のテーブルで、「森」の次から名前を順に振っていきます。
使用したVBAコード
Sub PopulateNamesInTableKeepingSecondCellName()
Dim doc As Document
Set doc = ActiveDocument
Dim tbl As Table
Set tbl = doc.Tables(1) ' 最初のテーブルを対象
' 名前リストを定義
Dim names As Variant
names = Array("森", "小森", "中森", "大森", "林", "小林", "中林", "大林")
' 2行目2列目の名前を取得(改行文字を除去)
Dim currentName As String
currentName = Trim(Left(tbl.Cell(2, 2).Range.Text, Len(tbl.Cell(2, 2).Range.Text) - 2))
' 現在の名前の次のインデックスを検索
Dim startIndex As Integer
startIndex = -1
Dim i As Integer
For i = LBound(names) To UBound(names)
If names(i) = currentName Then
startIndex = (i + 1) Mod (UBound(names) + 1)
Exit For
End If
Next i
' テーブルの3行目から順に名前を挿入
If startIndex <> -1 Then
For i = 3 To tbl.Rows.Count
tbl.Cell(i, 2).Range.Text = names(startIndex)
startIndex = (startIndex + 1) Mod (UBound(names) + 1)
Next i
Else
MsgBox "テーブルの2行目2列目の名前がリストに存在しません。"
End If
End Sub
補足ポイント
tbl.Cell(2, 2)
:2行目2列目を起点として開始.Range.Text
は末尾に改行文字(Chr(13) + Chr(7)
)が含まれるため、Left(..., Len(...) - 2)
で除去Mod
演算子でリストの末尾から先頭へのループを実現
実行の流れ
- Wordのテーブルの2行目2列目に名前を入力しておく(例:森)
- マクロを実行すると、その次の名前(例:小森)から順に3行目以降の2列目に挿入
- 名前リストの末尾まで行ったら、自動で先頭に戻って繰り返し
まとめ
WordのVBAを使えば、日付や担当者の繰り返し表を効率的に作成できます。
- 担当者リストを事前に配列として定義しておくだけでOK
- テーブルの構造を保ったまま、2列目だけを自動更新
- 担当割りやローテーション表の作成にぴったり
日常的に同じような名前を繰り返し入力している方にとって、業務効率化に役立つスニペットです。
最後までお読みいただき、ありがとうございました。
スクールの紹介
【アイデミー】AIを学んで一発逆転のキャリアチェンジ!
最後に宣伝をさせてください。
夢見るAIエンジニアへ、今こそ一歩を踏み出せ!
最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。
しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!
なぜこのサービスが選ばれるのか?その理由はこちら
- 初心者から上級者まで
完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。 - 徹底的な進捗管理
受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。 - 専属メンターによる徹底サポート
AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。 - 場所を選ばず学べるオンライン完結
東京以外の地域からも、気軽に学び始めることができます。
信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現
夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!