Excelの繰り返し作業を自動化したい方向けに、マクロ記録の練習、ブック・シート・セルの違い、CSV取り込み時の注意点、保存と実行前の確認をまとめます。

マクロ記録で小さな操作を試しながら、Excel VBAの操作対象とデータの扱い方を確認します。操作手順はWindows版デスクトップExcelを対象にしています。Excel for the webではVBAマクロを作成・実行・編集できません。Mac版ではメニューや利用できる機能が異なる場合があります。

小さな操作を記録してみる

VBAは、ExcelなどのOfficeアプリをプログラムから操作するための言語です。最初から長いコードを書く代わりに、マクロ記録で手動操作をコードに変換すると、操作と命令の対応を確認できます。

ここでは、練習用ブックのA1だけを太字にする操作を記録します。元に戻せない変更に備えて、実際の業務ファイルではなく新しい空のブックで試してください。

空の練習用ブックで相対参照をオフにし、A1を太字にする操作を記録。太字を解除してB1を選択し、実行後にA1だけが太字になったことを確認する4段階の流れ
図解:記録後はいったんA1の太字を解除し、同じシートのB1を選んで実行。A1が太字になり、B1の書式が変わらないことを確認します。(実際の操作画面ではありません)
  1. 新しいブックを作り、A1に「見出し」、B1に「確認用」と入力します。
  2. [ファイル]→[オプション]→[リボンのユーザー設定]で、[開発]にチェックを入れ、[OK]を押します。
  3. [開発]の[相対参照で記録]が有効になっていないことを確認します。今回はA1を固定して対象にします。記録前はB1を選択しておきます。
  4. [マクロの記録]を選び、マクロ名を「FormatHeader」、保存先を「作業中のブック」にします。ショートカットキーは空欄のままにし、[OK]を押して記録を開始します。
  5. A1を選択し、[ホーム]→[太字]を押します。ほかのセルは操作せず、[開発]→[記録終了]を選びます。
  6. 記録を終えてから、A1の太字を手動で解除し、同じシートのB1を選択します。
  7. [開発]→[マクロ]でFormatHeaderを選び、[実行]を押します。

A1が再び太字になり、B1の書式が変わらないことが確認点です。想定外のセルが変わる場合は、保存せずに練習用ブックを閉じ、記録中に選択したセルや相対参照の設定を見直します。

[マクロ]→[編集]では、記録されたコードをVisual Basic Editor(VBE)で確認できます。まずは記録した操作の前後でどこが違うかを読み、変更を1つずつ試しましょう。

公式資料:マクロ記録で作業を自動化する/Office VBAの基礎知識

操作する対象を先に決める

Excelファイル全体がWorkbook、その中のワークシートがWorksheet、セルやセル範囲がRangeです。「ブック→シート→範囲」の順で対象を考えると、別ファイルや別シートへの誤操作を減らせます。

Excelファイル全体のWorkbookにWorksheetが含まれ、その中のセルやセル範囲をRangeとして指定する関係を表した概念図
図解:ブック → シート → 範囲の順に、操作する対象を絞り込みます。同じA1でも、シートが違えば別のセルです。(実際の操作画面ではありません)
  • Workbook:開く・保存する・閉じる操作の対象になるファイルです。
  • Worksheet:名前や順番を持つワークシートです。同じA1でも、シートが違えば別のセルになります。
  • Range:A1やA1:C10のように、値や書式を読み書きする範囲です。

ThisWorkbookは「実行中のコードを含むブック」を指します。ActiveWorkbookは「現在アクティブなブック」です。コードを保存したブックとは別のブックをアクティブにすると、両者は一致しません。ActiveWorkbookが意図した処理対象とは限らない点にも注意します。個人用マクロブックに保存する場合も、この違いに注意します。

記録したコードにSelectionやActiveSheetが多い場合は、実行前の選択状態に影響される箇所を探してください。業務用に広げるときは、対象ブックとシートを明示し、選択している場所に頼らない構成を検討します。

公式資料:ThisWorkbook/ActiveWorkbook/Rangeオブジェクト

自動化する前にデータの意味を決める

商品コード・数量・日付は、同じ数字に見えても扱い方が違います。商品コード「00123」を数値にすると先頭のゼロが失われます。識別番号は文字列、計算する数量は数値、日付は日付として扱うか文字列のまま残すかを判断し、列ごとの意味を決めてから取り込みます。

  • 先頭ゼロと長い番号:識別用の文字列として保持します。Excelの数値精度は15桁なので、16桁以上の番号を数値にしないようにします。
  • CSVの文字化け:UTF-8、CP932(Windows-31J)など、どの文字コードかを、作成元の仕様と取り込み設定で確認します。
  • CSVの列ずれ:項目内のカンマや引用符があるため、単にカンマで文字列を分割する処理では正しく扱えない場合があります。
  • 空欄と最終行:見出しだけの表、途中の空白、数式だけがあるセルをどう扱うか決めます。見た目の空欄と未入力セルを混同しないようにします。

CSVを開いた後でセルの表示形式を文字列に変えても、すでに失われた先頭ゼロや変わった末尾は復元できません。元ファイルを保管し、読み込む時点の型を確認してください。

毎回同じCSVを読み込んで列を整えるなら、[データ]→[テキスト/CSVから]で利用できるPower Queryも候補です。セル単位の計算は関数、繰り返す操作や複数の処理の組み合わせはVBAなど、必要な作業に合わせて選びます。

公式資料:先頭のゼロおよび大きい数値の保持/データソースからのインポート

実行前と保存前に確認すること

VBAを含むブックを保存する場合は、Excelマクロ有効ブック(.xlsm)を使います。.xlsxはVBAコードを保存する形式ではありません。マクロが不要な結果ファイルと、処理を持つブックを分ける場合は、それぞれの役割を決めて保存します。

  • 元ファイルを残し、最初はコピーまたは練習用の新規ブックで試す
  • 対象ファイル名、シート名、書き込む範囲を確認する
  • 空のデータ、1件のデータ、通常のデータで結果を比べる
  • 処理の前後で件数と、先頭・末尾の代表的な値を確認する
  • 上書き保存・削除・メール送信などを含む処理は、対象と結果を確認してから実行する

入手元が不明なマクロを実行したり、「すべてのマクロを有効にする」設定へ一律に変更したりしないでください。組織の制限で実行できない場合は、管理者へ確認します。マクロの実行による変更は、通常の[元に戻す]では戻せないため、保存前のコピーが重要です。

公式資料:マクロの保存/マクロのセキュリティ設定/Excel for the webとVBA

まずは「A1だけを太字にする」のように対象と結果がはっきりした操作から始め、次にブック・シート・範囲を明示する考え方へ進めると、業務で使う処理を組み立てやすくなります。

Excel VBAの機能ガイドに戻る