普段仕事をしていると、取引先やお客様、社員など、多数の人に案内文書や通知を送ることがあるかと思います。
その時、相手の会社名や名前など、特定の部分だけを変更したいなんてことはありませんか?
そんな時はExcelマクロで一発で内容変更し、複数シートを一発で作成しちゃいましょう!
この記事を真似するだけで簡単に作ることができます。
実行イメージ
関連記事【ExcelVBA】入力した文字列をシート名にする簡単マクロ
関連記事【ExcelVBA】一覧表からシート名をまとめて作成する方法
今回の記事に関してご不明な点があれば、問合せフォームからご連絡ください。
<動作確認環境>
- Windows 10 Home(バージョン22H2)
- Microsoft Office Professional Plus 2019
▼この記事を書いたひと
筆者のRYO。MOSマスター資格者。Excel操作テクニックやマクロVBA知識が豊富。本業で日々Excelを使い倒しており、現場に近いExcelの悩み解決が得意。
マクロコード
▼マクロコード(コピペ用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub 案内文発行() Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("送付先一覧") Set ws2 = Worksheets("定型フォーマット") Dim LastRow As Long LastRow = ws1.Cells(Rows.Count, "B").End(xlUp).Row Dim i As Long For i = 2 To LastRow ws2.Copy after:=Worksheets(Worksheets.Count) With Worksheets(Worksheets.Count) .Name = ws1.Cells(i, "B").Value .Range("A5") = ws1.Cells(i, "B").Value End With Next i End Sub |
コード解説
変数の定義
今回登場する2種類のシートをそれぞれ変数に格納します。
変数の名前は何でもいいですが、ws(ワークシートの略)としました。型はワークシート型で。
カッコの中のワークシート名は間違えないように。
また、送付先一覧シートのデータが何行あるか不明確な場合を考慮し、B列の最終行を取得します。
取得した最終行番号は、のちほど使うため、変数に格納しておきます。
ちなみに、今回B列の最終行番号は 「26」になります。
「For Next」ステートメントで繰り返し処理
For Nextステートメントは、繰り返し処理を行うステートメントの1つです。
For から next i までの中に記述されたコードが指定回数だけ実行され、指定回数を過ぎるとFor Nextから抜けることになります。
指定回数は「2 TO LastRow」の部分です。
今回、LastRowの変数には26が格納されているので、2から26までの数字が変数 i の中に格納されながら処理が行われ、26になったときにFor文から抜けます。
Copyメソッドでシート追加
シートをコピーする時は、Copyメソッドを使います。
『ws2.Copy after:=Worksheets(Worksheets.Count) 』で、一番最後のシートにコピーするという意味になります。
Withステートメント
Withで1度だけ書いたオブジェクトは、End With と書かれているところまでは省略して書くことができます。
今回の場合 With の後ろに書かれている「Worksheets(Worksheets.Count)」 の記述が省略できます。
Name プロパティ
Excel VBAでシート名取得するには、 「Name プロパティ」を使用します。
.Name = ws1.Cells(i, "B").Value の部分で、送付先一覧シートのB列の2行目から26行目までの文字列をシート名にしています。
シート名に使えない文字があるので注意ください。
使えない文字を使用した場合は、マクロがエラーになります。
シート名に使用できない文字一覧
- コロン (:)
- バックスラッシュ ()
- スラッシュ (/)
- クエスチョンマーク (?)
- アスタリスク (*)
- ブラケット ([], {})
- シングルクォート (')
- ダブルクォート (")
- グレーターサイン (>)
- レスサイン (<)
- ピリオド (.)
- セミコロン (;)
- バーティカルバー (|)
実行時エラーが表示された場合は、「終了」ボタンをクリックしてから、 これらの使えない文字を含まないセルを選ぶか、使えない文字を削除後、マクロを再実行しましょう。
定型フォーマットの所定箇所にデータ入力
ここまできたら、最後に、ws2のA5セルにデータを入力する処理を書いたら完了です!
完成実行イメージ
今回の解説は以上です!
記事に関する質問やお問い合わせがあれば、問い合わせフォームからご連絡ください。