【画像で解説】コピペしたExcel VBAを実行する方法|F5・Alt+F8を初心者向けに1ステップずつ

実際のExcel画面に重ねたVBA初期設定チェックリスト VBA
実際のExcel画面に重ねたVBA初期設定チェックリスト

VBAコードをコピーしたものの、「どこに貼るの?」「貼った後は何を押すの?」と止まっていませんか。

結論からいうと、通常のコピペ用マクロなら、次の順番で実行できます。

.xlsmで保存 → Alt+F11 → 挿入 → 標準モジュール → コードを貼る → コード内をクリック → F5

貼り付け直後に一度動かすだけなら、VBAエディター内で F5 を押す方法が最短です。Excel画面からもう一度動かすときは、Alt+F8 → マクロ名 → 実行を使います。

この記事では、練習用の安全なマクロを使い、コピーから実行結果の確認までをワンステップずつ説明します。開発タブの表示は必須ではありません。

この記事はWindows版のデスクトップExcel向けです。ブラウザー版のExcelではVBAマクロを作成・編集・実行できません。

  1. まず覚える実行方法は3つ
  2. 実行前に確認すること
    1. 1. 信頼できるコードだけを実行する
    2. 2. 元のファイルではなく、練習用コピーを使う
    3. 3. 今回の方法で動かせるコードか確認する
  3. 手順0:デスクトップ版Excelで空白ブックを開く
  4. 手順1(任意):開発タブを表示する
  5. 手順2:ブックを「.xlsm」で保存する
  6. 手順3:VBAエディターに標準モジュールを作り、コードを貼る
    1. 3-1:Alt+F11でVBAエディターを開く
    2. 3-2:左側で、貼り付け先のブックを選ぶ
    3. 3-3:「標準モジュール」を作る
    4. 3-4:コードを丸ごと貼り付ける
  7. 手順4:貼り付け直後の最短方法「F5」で実行する
    1. F5を押して別のマクロが動くとき
  8. 手順5:Excel画面からAlt+F8で実行する
  9. 毎回Alt+F8を押したくないとき
  10. Alt+F8に表示されないコードもある
  11. マクロが無効・ブロックされたとき
    1. 黄色い「セキュリティの警告」が出た場合
    2. 「信頼されていないソース」として完全にブロックされた場合
  12. うまく動かないときのチェックリスト
  13. よくある質問
    1. Q1. 開発タブを表示しないとVBAは使えませんか?
    2. Q2. F5とAlt+F8はどちらを使えばよいですか?
    3. Q3. F8だけを押すとどうなりますか?
    4. Q4. .xlsxのままでも実行できますか?
    5. Q5. Alt+F8にWorksheet_Changeが出ません
    6. Q6. マクロを途中で止めたいときは?
  14. まとめ:最初はこの順番だけ覚えればOK
  15. 参考にしたMicrosoft公式情報

まず覚える実行方法は3つ

マクロの実行方法はいくつもありますが、最初は全部覚えなくて大丈夫です。

使う場面 方法 初心者へのおすすめ度
コードを貼った直後に試す コード内をクリックして F5 ★★★ 最短
Excel画面から繰り返し動かす Alt+F8 → マクロ名 → 実行 ★★★ 迷いにくい
毎日の作業で使う シート上のボタンをクリック ★★ 初期設定が必要

この記事では、データを書き換えない確認用マクロ HelloVBA を、F5とAlt+F8で1回ずつ動かします。2つの実行方法の違いを体験するためです。

実際の業務マクロは、F5またはAlt+F8のどちらか一方から、まず1回だけ実行してください。 追記・削除・メール送信などの処理を続けて2回実行すると、同じ処理が重複することがあります。

実行前に確認すること

1. 信頼できるコードだけを実行する

知らない人から届いたコードや、何をするか確認できないコードは実行しません。「コピペで始めるVBA」など入手元が分かるコードでも、説明にある処理内容と貼り付け場所を先に確認してください。

会社のパソコンでマクロが禁止されている場合は、設定を回避せず管理者へ確認します。

2. 元のファイルではなく、練習用コピーを使う

VBAで行った変更は、基本的に Ctrl+Zでは元に戻せません。最初は大切なブックを直接使わず、次のどちらかで試してください。

  • 元のExcelファイルをコピーし、コピー側で試す
  • 新しい空白ブックで確認用マクロを試す

ほかのExcelブックを閉じておくと、別のブックやシートを誤って変更しにくくなります。OneDriveの自動保存が有効な場合も、練習用コピーを作るのがおすすめです。

3. 今回の方法で動かせるコードか確認する

この記事の対象は、次のように Sub で始まり End Sub で終わる、手動実行用のマクロです。

Sub マクロ名()
    ' ここに処理が書かれています
End Sub

ブログからコピーするときは、Sub から End Sub までを丸ごと選びます。コード枠の上下にある記号や説明文、「コピー」などの文字は貼り付けません。

Worksheet_ChangeWorkbook_OpenFunctionから始まるコードは貼り付け先や動くタイミングが異なります。記事の後半で違いを説明します。

手順0:デスクトップ版Excelで空白ブックを開く

初めて試すときは、業務ファイルではなく空白ブックを使います。

  1. WindowsでExcelのデスクトップアプリを起動します。
  2. 「新規」を選びます。
  3. 「空白のブック」をクリックします。

ブラウザーのExcelで開いている場合は、「デスクトップ アプリで開く」を選びます。VBAマクロはブラウザー版Excelでは実行できません。

手順1(任意):開発タブを表示する

この記事の最短手順では、ショートカットキーを使うため開発タブは表示しなくても実行できます。マウスで「Visual Basic」や「マクロ」を開きたい人だけ、次の設定をしてください。ショートカットで進む人は、手順2へ進んで構いません。

  1. 「ファイル」→「オプション」を開きます。
  2. 「リボンのユーザー設定」を開きます。
  3. 右側の「メイン タブ」にある「開発」へチェックを入れます。
  4. 「OK」をクリックします。
Excel上部に開発タブが表示された実際の画面
「開発」タブが見えれば設定完了です。Alt+F11とAlt+F8を使う場合、この設定は省略できます。

手順2:ブックを「.xlsm」で保存する

VBAコードを保存するブックは、先に Excel マクロ有効ブック(.xlsm) にします。通常の .xlsx 形式にはVBAコードを保存できません。

  1. Excel左上の「ファイル」をクリックします。
  2. 「名前を付けて保存」を開きます。
  3. 必要に応じて「参照」をクリックします。
  4. 「ファイルの種類」で「Excel マクロ有効ブック(*.xlsm)」を選びます。
  5. VBA練習.xlsm など、分かりやすい名前を付けて保存します。
名前を付けて保存でExcelマクロ有効ブックを選ぶ実際の画面
「ファイルの種類」がExcel マクロ有効ブックになっていれば準備完了です。

コードを貼った後に「マクロなしのブックに保存しますか」と表示された場合は、マクロを残すために「いいえ」を選び、.xlsm形式で保存し直してください。

手順3:VBAエディターに標準モジュールを作り、コードを貼る

ここからはVBAエディターで作業します。「開く」「ブックを選ぶ」「標準モジュールを作る」「貼る」の4つに分けて進めます。

3-1:Alt+F11でVBAエディターを開く

Excelの画面で、Altキーを押しながらF11キーを押します。

「Microsoft Visual Basic for Applications」という別画面が開けば成功です。この画面を、この記事ではVBAエディター(VBE)と呼びます。

ノートパソコンで反応しない場合は、Alt+Fn+F11を試してください。F11キーが音量や画面の明るさに割り当てられている機種では、Fnキーが必要なことがあります。

3-2:左側で、貼り付け先のブックを選ぶ

VBAエディター左側の「プロジェクト エクスプローラー」で、先ほど保存したブックを探します。

たとえば、ファイル名が VBA練習.xlsm なら、次のように表示されます。

VBAProject (VBA練習.xlsm)
  1. 自分が保存したファイル名を確認します。
  2. その VBAProject を1回クリックします。
  3. 別のブックや PERSONAL.XLSB を選んでいないことを確認します。

左側の一覧が見えないときは、Ctrl+Rを押してください。または「表示」→「プロジェクト エクスプローラー」を選びます。

複数のブックを開いたままだと、別のブックへコードを貼りやすくなります。初心者のうちは、作業対象以外のブックを閉じておくと迷いません。

3-3:「標準モジュール」を作る

通常のコピペ用マクロは、Sheet1ThisWorkbookではなく、標準モジュールへ貼り付けます。

  1. 自分の VBAProject を選んだ状態にします。
  2. VBAエディター上部の「挿入」をクリックします。
  3. 「標準モジュール」をクリックします。
  4. 左側に「標準モジュール」フォルダーと Module1 ができたことを確認します。
  5. 右側に白いコード入力欄が表示されれば成功です。
VBAエディターで標準モジュールを作りModule1へコードを貼った実際の画面
「挿入 → 標準モジュール」でModule1を作り、右側の白い欄へコードを貼ります。

3-4:コードを丸ごと貼り付ける

まずは、セルやファイルを書き換えない確認用マクロで練習します。

Sub HelloVBA()
    MsgBox "VBAが動きました", vbInformation
End Sub
  1. 上のコードを Sub から End Sub までコピーします。
  2. Module1の右側にある白い欄を1回クリックします。
  3. Ctrl+Vで貼り付けます。
  4. Sub HelloVBA()MsgBox ...End Subの3行があることを確認します。
  5. Ctrl+Sで保存します。

一番上に Option Explicit と表示されていても問題ありません。その下の空いている行へ貼り付けてください。

貼り付けた文字が赤くなった場合は、コードの途中だけをコピーしていないか、コード枠の記号や説明文まで貼っていないかを確認します。

手順4:貼り付け直後の最短方法「F5」で実行する

貼り付け直後の初回実行は、F5が最も簡単です。

  1. Sub HelloVBA()からEnd Subまでの間を1回クリックします。
  2. キーボードの F5 を押します。
  3. ノートパソコンで反応しない場合は Fn+F5 を押します。

「VBAが動きました」という小さな画面が出れば成功です。「OK」をクリックして閉じます。

確認用マクロを実行してVBAが動きましたというメッセージが表示された実際のExcel画面
このメッセージが出れば、コードの貼り付け場所と実行方法は正しく設定できています。

F5を押して別のマクロが動くとき

1つの標準モジュールに複数のマクロがある場合、F5はカーソルが入っているマクロを実行します。実行したい SubEnd Sub の間をクリックしてからF5を押してください。

手順5:Excel画面からAlt+F8で実行する

実行方法の違いを確認するため、データを書き換えない HelloVBA だけを、Excel画面からもう一度動かしてみます。

ここで2回目を実行してよいのは、メッセージを表示するだけの確認用マクロだからです。実際の業務マクロは、F5かAlt+F8のどちらか一方で1回だけ実行します。

  1. Alt+F11をもう一度押してExcelへ戻ります。
  2. Excel画面で Alt+F8を押します。
  3. マクロ一覧から HelloVBA を選びます。
  4. 「実行」をクリックします。
  5. 「VBAが動きました」と表示されたら成功です。
Alt+F8で開いたExcelのマクロ画面でHelloVBAを選び「実行」をクリックする画面
青く選ばれたHelloVBAを確認し、「実行」をクリックします。上の入力欄にも同じ名前が表示されますが、マクロが2つあるわけではありません。

Alt+F8は、開発タブを表示していなくても使えます。2回目以降に「どのマクロを動かすか」を名前で確認したいときに便利です。

F5はVBAエディター内のマクロを実行、F8だけならコードを1行ずつ実行、Alt+F8はExcelのマクロ一覧を開きます。似ていますが役割が違います。

毎回Alt+F8を押したくないとき

正しく動くことを確認できたら、シート上のボタンへマクロを割り当てると、次回からはクリックだけで実行できます。

マクロをボタン1つで実行する方法では、フォームコントロールと図形の両方を使った手順を説明しています。

最初からボタンを作ると、動かない原因が「コード」なのか「ボタンの設定」なのか分かりにくくなります。確認用の HelloVBA でF5とAlt+F8を練習した後、実際に使うマクロはどちらか一方で1回だけ動作確認し、最後にボタン化するのがおすすめです。

Alt+F8に表示されないコードもある

すべてのVBAコードをAlt+F8から実行できるわけではありません。最初の行を見ると、実行方法を判断しやすくなります。

コードの始まり 主な貼り付け先 動くタイミング
Public Sub MacroName() または Sub MacroName()(引数なし) 標準モジュール F5またはAlt+F8で手動実行
Private Sub Worksheet_Change(...) 対象シートのモジュール セルの値を変更したときに自動実行
Private Sub Workbook_Open() ThisWorkbook ブックを開いたときに自動実行
Function MyFunction(...) 通常は標準モジュール セルの数式や別のVBAから呼び出す

たとえばWorksheet_Changeは、標準モジュールへ貼ってAlt+F8で動かすコードではありません。詳しくはセルの値が変わったら自動実行する方法で確認してください。

「コピペで始めるVBA」の各記事では、コードの近くにある貼り付け場所実行方法を先に確認すると失敗が減ります。

マクロが無効・ブロックされたとき

黄色い「セキュリティの警告」が出た場合

自分で作成したブックに、自分で内容を確認したコードを貼った場合だけ、「コンテンツの有効化」を選びます。知らない人から届いたファイルや、コード内容を確認できないファイルでは有効化しないでください。

「信頼されていないソース」として完全にブロックされた場合

現在のWindows版Officeでは、インターネットやメールから入手したマクロ付きファイルが既定でブロックされることがあります。

初心者に最も安全で簡単なのは、ローカルで新しい.xlsmを作り、内容を確認したコードだけを標準モジュールへ貼る方法です。

ダウンロードしたファイル自体を使う必要がある場合は、入手元とコード内容を確認してから、Microsoftの案内に従って個別に許可します。会社のパソコンで許可できない場合は、セキュリティ設定を回避せず、管理者へ確認してください。

「すべてのマクロを有効にする」設定への変更はおすすめしません。知らないファイルのマクロまで確認なしで実行されるためです。

参考:Microsoft公式のインターネット由来のマクロが既定でブロックされる仕組み

うまく動かないときのチェックリスト

症状 よくある原因 対処
Alt+F11が反応しない Fnキーが必要/ブラウザー版Excelを使っている Alt+Fn+F11を試し、デスクトップ版Excelで開く
左側にファイル名が出ない プロジェクト エクスプローラーが非表示 VBAエディターでCtrl+Rを押す
貼る場所が分からない 標準モジュールを作っていない 自分のVBAProjectを選び「挿入 → 標準モジュール」
F5を押しても目的のマクロが動かない カーソルが別のSubにある 実行したいSubとEnd Subの間をクリックしてF5
Alt+F8にマクロ名が出ない Sheet1やThisWorkbookに貼った/引数付き・PrivateのSub 通常の手動マクロなら標準モジュールへ移す。イベントコードは元の記事の実行方法に従う
保存時に警告が出る .xlsxで保存しようとしている 「いいえ」を選び、Excel マクロ有効ブック(.xlsm)で保存
文字が赤くなる/コンパイルエラー コードの一部、説明文、コード枠の記号まで貼った コード枠内のSubからEnd Subまでをコピーし直す
実行時エラーが出る シート名・セル・フォルダーなど、記事の前提と違う エラー番号とメッセージを先に控える。停止行も確認する場合は「デバッグ」を選び、黄色い行を控えてからVBAエディターの「実行 → リセット」
別のブックやシートが変わった 対象を選ばず実行した/ほかのブックが開いている 練習用コピーへ戻り、対象シートを選び、不要なブックを閉じて再実行

エラー画面で「終了」を先に押すと、停止した黄色い行は確認できません。まずエラー番号とメッセージを控え、行も調べたい場合は「デバッグ」を選びます。黄色い行を記録した後に「実行 → リセット」で終了してください。エラーに備えたコードの書き方は、エラー処理で止まらないマクロを作る方法で解説しています。

よくある質問

Q1. 開発タブを表示しないとVBAは使えませんか?

いいえ。Windows版Excelでは、Alt+F11でVBAエディター、Alt+F8でマクロ一覧を開けるため、今回の手順に開発タブは必須ではありません。

Q2. F5とAlt+F8はどちらを使えばよいですか?

貼り付け直後の動作確認はF5が最短です。Excel画面からマクロ名を確認して再実行するときはAlt+F8が分かりやすいです。

Q3. F8だけを押すとどうなりますか?

VBAエディターでF8だけを押すと、コードを1行ずつ実行する「ステップ実行」になります。マクロ一覧を開く場合は、Altキーを押しながらF8です。

Q4. .xlsxのままでも実行できますか?

コードを貼った直後は動くことがありますが、.xlsxにはVBAコードを保存できません。閉じた後も使うなら.xlsmで保存してください。

Q5. Alt+F8にWorksheet_Changeが出ません

正常です。Worksheet_Changeは対象シートのモジュールへ貼り、セルの値を変更したときに自動で動くイベントです。Alt+F8から手動実行するコードではありません。

Q6. マクロを途中で止めたいときは?

Ctrl+Breakを押すと中断モードへ切り替えられます。Breakキーがない場合は、VBAエディターの「実行」→「中断」を選びます。その後、「実行」→「リセット」で終了してください。停止した時点まで処理が進んでいる場合があるため、練習用コピーで状態を確認します。詳しくはMicrosoft公式のStop code executionを参照してください。

まとめ:最初はこの順番だけ覚えればOK

  1. 元ファイルのコピー、または空白ブックを用意する
  2. Excel マクロ有効ブック(.xlsm)で保存する
  3. Alt+F11でVBAエディターを開く
  4. 自分のVBAProjectを選ぶ
  5. 「挿入 → 標準モジュール」でModule1を作る
  6. SubからEnd Subまでを丸ごと貼り付ける
  7. Ctrl+Sで保存する
  8. コード内をクリックしてF5で実行する
  9. 次回以降はExcelでAlt+F8 → マクロ名 → 実行(業務マクロは1回だけ)

一度この確認用マクロを動かせれば、「コピペで始めるVBA」の通常の手動マクロも、基本的に同じ流れで試せます。次は、確認済みのマクロをボタン1つで実行する方法へ進むと、毎日の操作をクリックだけにできます。

VBAをどの順番で学べばよいか迷った場合は、VBA入門ロードマップから進めると、コピペ、実行、書き換えの順で段階的に学べます。

参考にしたMicrosoft公式情報

コメント

タイトルとURLをコピーしました