目次
このチュートリアルでは、マクロの記録とVBAコードの挿入、マクロのワークブック間のコピー、マクロの有効化と無効化、コードの表示、変更など、Excelマクロを学ぶための方法を紹介します。
Excel初心者にとってマクロは敷居が高く、VBAをマスターするには数ヶ月から数年のトレーニングが必要です。 しかし、Excelマクロの自動化能力をすぐに活用できないわけではありません。 VBAプログラミングの全くの初心者でも、繰り返し行う作業の一部を自動化するマクロを簡単に記録することができるのです。
この記事は、Excelマクロの魅力的な世界への入り口です。 始めるために必要な基本的な知識をカバーし、関連する詳細なチュートリアルへのリンクも提供しています。
Excelのマクロとは何ですか?
Excelマクロは、VBAコードの形式でワークブックに保存されたコマンドまたは命令のセットです。 あらかじめ定義された一連の動作を実行する小さなプログラムと考えることができます。 マクロは一度作成すると、いつでも再利用できます。 マクロを実行すると、それが含むコマンドが実行されます。
一般に、マクロは繰り返し行う作業や日常業務を自動化するために使用されますが、熟練したVBA開発者は、キーストローク数の削減をはるかに超える高度なマクロを作成することができます。
よく「マクロ」を「VBA」と呼ぶ人がいますが、マクロはコードの一部、VBAはマクロを書くためにマイクロソフトが作ったプログラミング言語という区別があります。
なぜExcelマクロを使うのか?
マクロの主な目的は、より多くの作業をより短時間で行うことです。 数値の計算や文字列の操作に数式を使用するように、マクロを使用して頻繁に行う作業を自動的に実行することができます。
例えば、上司に提出する週報を作成するために、様々な分析データを外部のリソースから取り込むとします。 問題は、それらのデータが乱雑であったり、余計なものがあったり、Excelが理解できる形式でないことです。 つまり、日付や数字を再フォーマットし、余分なスペースを削除し、空白を取り除き、情報をコピーして適切な列へ貼り付ける必要があるのです。また、グラフを作成してトレンドを視覚化するなど、さまざまな方法でレポートをわかりやすく、使いやすくすることができます。 これらの操作をマウスクリックで瞬時に実行できることをイメージしてください。
もちろん、複雑なマクロの作成には時間がかかります。 時には、同じ操作を手動で行うよりもさらに時間がかかることもあります。 しかし、マクロの作成は一度だけです。 一度作成し、デバッグとテストを行えば、VBAコードは素早く完璧に仕事をこなし、人的ミスや費用のかかるミスを最小限に抑えることができます。
エクセルでマクロを作成する方法
Excelでマクロを作成するには、マクロレコーダーとVisual Basic Editorを使用する2つの方法があります。
ヒント Excelでは、マクロを使ったほとんどの操作は デベロッパー タブがありますので、Excelのリボンに「開発者」タブを追加しておいてください。
マクロを記録する
プログラミングやVBAの知識がなくても、Excelにマクロとして記録させるだけで、簡単に作業の一部を自動化できます。 あなたが操作している間、Excelはあなたのマウスクリックやキーストロークを細かく監視し、VBA言語で書き留めることができるのです。
マクロレコーダーは、あなたが行うほぼすべての操作をキャプチャし、非常に詳細な(しばしば冗長な)コードを生成します。 録画を停止してマクロを保存した後、Visual Basic Editorでそのコードを表示し、小さな変更を加えることができます。 マクロを実行すると、記録したVBAコードに戻って、まったく同じ動きを実行するExcelです。
をクリックすると、録音が開始されます。 記録マクロ のどちらかのボタンをクリックします。 デベロッパー タブまたは ステータス バーです。
詳しくは、「Excelでマクロを記録する方法」をご覧ください。
Visual Basic Editorでマクロを作成する
Visual Basic for Applications (VBA) Editor は、Microsoft Excel が記録されたマクロと手動で記述されたマクロのコードを保存する場所です。
VBA Editorでは、一連の動作をプログラムするだけでなく、カスタム関数の作成、独自のダイアログボックスの表示、様々な条件の評価、そして最も重要なロジックのコーディングが可能です 当然、独自のマクロを作成するにはVBA言語の構造と構文に関するある程度の知識が必要ですが、これはこの初心者向けチュートリアルの範囲外です。 しかし、このようなことは何もないでしょう。は、他人のコード(例えば、あなたが私たちのブログで見つけたもの : )を再利用することを防ぎ、Excel VBAの全くの初心者であっても、何の苦労もないはずです!
まず、Alt + F11キーを押して、Visual Basic Editorを開きます。 そして、この2つの簡単なステップでコードを挿入します。
- 左側のプロジェクトエクスプローラーで、対象のワークブックを右クリックし インサート > モジュール .
- 右側のコードウィンドウに、VBAのコードを貼り付けます。
完了したら、F5キーを押してマクロを実行します。
詳しい手順については、「ExcelにVBAコードを挿入する方法」をご覧ください。
エクセルでマクロを実行する方法
Excelでマクロを起動するには、いくつかの方法があります。
- ワークシートからマクロを実行するには マクロ ボタンをクリックします。 デベロッパー タブをクリックするか、Alt + F8 のショートカットを押します。
- VBA Editorからマクロを実行するには、以下のどちらかのキーを押します。
- F5でコード全体を実行します。
- F8でコードを一行ずつ確認することができます。 テストやトラブルシューティングに非常に便利です。
また、カスタムボタンをクリックしたり、割り当てられたショートカットを押すことでも、マクロを起動できます。 詳しくは、「Excelでマクロを実行する方法」をご覧ください。
Excelでマクロを有効にする方法
セキュリティ上の理由から、Excelのすべてのマクロはデフォルトで無効になっています。 そのため、VBAコードの魔法を有利に使うには、有効にする方法を知っておく必要があります。
特定のワークブックでマクロを有効にする最も簡単な方法は、「マクロを有効にする」をクリックすることです。 コンテンツを有効にする ボタンをクリックすると、マクロを含むワークブックを最初に開いたときにシートの上部に表示される黄色いセキュリティ警告バーが表示されます。
マクロのセキュリティについて詳しく知りたい方は、「Excelでマクロを有効・無効にする方法」をご覧ください。
マクロの設定を変更する方法
Microsoft Excel では、VBA コードをワークブックで実行するかどうかを、「マクロ設定」で選択した内容に基づいて決定します。 トラストセンター .
ここでは、Excelのマクロ設定にアクセスし、必要に応じて変更する手順を説明します。
- に行ってみてください。 ファイル タブを選択し オプション .
- 左側のペインで、以下を選択します。 トラストセンター をクリックします。 トラストセンターの設定... .
- での トラストセンター をクリックすると、ダイアログボックスが表示されます。 マクロの設定 をクリックし、目的のオプションを選択して よっしゃー .
下のスクリーンショットでは、デフォルトのマクロ設定が選択されています。
詳しくは、Excelのマクロ設定について解説をご覧ください。
ExcelでVBAコードを表示、編集、デバッグする方法
マクロのコードの変更は、Excelマクロレコーダーで自動生成されたものでも、自分で書いたものでも、すべてVisual Basic Editorで行われます。
VBエディターを開くには、Alt + F11キーを押すか、または ビジュアルベーシック ボタンをクリックします。 デベロッパー タブで表示します。
への ビューと編集 で、特定のマクロのコードを プロジェクト・エクスプローラ をダブルクリックするか、モジュールを右クリックして 表示コード .コードウィンドウが開き、コードを編集することができます。
への テストとデバッグ F8キーを押すと、マクロのコードが一行ずつ表示され、各行がワークシートに与える影響を確認できます。 現在実行されている行は黄色でハイライトされます。 デバッグモードを終了するには リセット ボタンをクリックします(青い四角)。
マクロを別のワークブックにコピーする方法
あるワークブックで作成したマクロを他のファイルでも使いたい? Excelでマクロをコピーするには、2つの方法があります。
マクロを含むモジュールをコピーする
目的のマクロが別のモジュールに存在する場合や、モジュール内のすべてのマクロが自分にとって有用である場合は、モジュール全体をワークブックから別のワークブックにコピーすることが理にかなっています。
- マクロを含むワークブックと、マクロをコピーするワークブックの両方を開いてください。
- Visual Basic Editorを開きます。
- プロジェクトエクスプローラーペインで、マクロを含むモジュールを見つけ、目的のワークブックにドラッグします。
以下のスクリーンショットでは、コピーしています。 モジュール1 から 書籍1 まで 書籍2 :
マクロのソースコードをコピーする
もし、モジュールに多くの異なるマクロが含まれていて、一つだけ必要な場合は、その特定のマクロのコードだけをコピーします。 その方法は以下の通りです。
- 両方のワークブックを開きます。
- Visual Basic Editorを開きます。
- プロジェクトエクスプローラーペインで、コピーしたいマクロを含むモジュールをダブルクリックし、そのコードウィンドウを開く。
- コードウィンドウで、対象のマクロを探し、そのコード(先頭が サブ で終わり エンド・サブ ) を選択し、Ctrl + Cキーでコピーします。
- プロジェクトエクスプローラーで、目的のワークブックを見つけ、そこに新しいモジュールを挿入するか(ワークブックを右クリックし インサート > モジュール をクリックするか、既存のモジュールをダブルクリックして、そのコードウィンドウを開きます。
- コピー先のモジュールのコードウィンドウで、Ctrl + Vキーを押してコードを貼り付けます。 モジュールにすでにコードが含まれている場合は、最後のコード行までスクロールし、コピーしたマクロを貼り付けます。
Excelでマクロを削除する方法
あるVBAコードが不要になった場合、そのコードを削除するために マクロ ダイアログボックスまたはVisual Basic Editorを使用します。
ワークブックからマクロを削除する
Excelのワークブックから直接マクロを削除するには、次の手順を実行します。
- について デベロッパー タブで コード グループをクリックします。 マクロ ボタンを押すか、Alt + F8 のショートカットを押します。
- での マクロ ダイアログボックスで、削除したいマクロを選択し 削除 .
ヒント
- 開いているすべてのファイルのマクロを表示するには 開いているすべてのワークブック から のマクロ のドロップダウン・リスト。
- 個人用マクロワークブック内のマクロを削除できるようにするには、まずPersonal.xlsbを非表示にする必要があります。
Visual Basic Editorでマクロを削除する
VBA Editorを使うと、モジュールとその中に含まれるマクロを一括して削除することができます。 また、VBA Editorを使うと、パーソナルマクロワークブック内のマクロを非表示にせずに削除することができます。
永久に モジュールを削除する は、以下の手順で行ってください。
- での プロジェクト・エクスプローラ を選択し、モジュール上で右クリックし 削除 をクリックすると、コンテキストメニューが表示されます。
- モジュールを削除する前にエクスポートするかどうか尋ねられたら、 をクリックします。 いいえ .
への 特定のマクロを削除する また、マクロを削除するには、コードウィンドウで ツール VBA Editorのメニューです。
- より ツール メニューを選択します。 マクロ . マクロ のダイアログボックスが表示されます。
- での マクロ で ドロップダウン・リストから、不要なマクロを含むプロジェクトを選択します。
- での マクロ名 ボックスで、マクロを選択します。
- をクリックします。 削除 ボタンをクリックします。
エクセルでマクロを保存する方法
Excelで記録したマクロや手動で書いたマクロを保存するには、ワークブックをマクロ有効(*.xlms)として保存するだけです。 その方法は次のとおりです。
- マクロを含むファイルで セーブ ボタンを押すか、Ctrl + S を押してください。
- があります。 名前を付けて保存 ダイアログボックスが表示されます。 Excel マクロ対応ワークブック (*.xlsm) から タイプとして保存 のドロップダウンリストをクリックし セーブ :
Excelでマクロをエクスポートおよびインポートする方法
VBAのコードを誰かと共有したり、別のコンピュータに移動したりしたい場合は、モジュール全体を.basファイルとしてエクスポートするのが一番早い方法です。
マクロのエクスポート
VBAのコードをエクスポートするには、このようにします。
- マクロを含むワークブックを開きます。
- Alt + F11キーを押して、Visual Basic Editorを開きます。
- プロジェクトエクスプローラで、マクロを含むモジュールを右クリックし、次の項目を選択します。 エクスポートファイル .
- エクスポートしたファイルを保存するフォルダーに移動し、ファイル名を付けて セーブ .
マクロのインポート
VBAコードを含む.basファイルをExcelに取り込むには、以下の手順で行ってください。
- マクロを取り込みたいワークブックを開く。
- Visual Basic Editorを開きます。
- プロジェクトエクスプローラーで、プロジェクト名を右クリックし インポートファイル .
- .basファイルまで移動し オープン .
エクセルマクロの例
Excel VBAを学ぶ最良の方法の一つは、コードサンプルを調べることです。 以下に、いくつかの基本的な操作を自動化する非常に簡単なVBAコードの例を示します。 もちろん、これらの例はコーディングを教えるものではありません。これについては、プロ級のVBAチュートリアルが数多くあります。 ここでは、VBAの共通機能をいくつか説明し、その考え方をもう少し詳しく知ってもらうことが目的です。あなた
ワークブック内のすべてのシートの非表示を解除する
この例では アクティブワークブック オブジェクトを使用して、現在アクティブなワークブックと それぞれについて ループでワークブック内のすべてのシートを1つずつ調べ、見つかったシートに対して 可視 になるようにする。 xlSheetVisible .
Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End Subアクティブなワークシートを非表示にする、または非常に非表示にする
現在アクティブなシートを操作するには アクティブシート オブジェクトを変更します。 このサンプルマクロは 可視 をアクティブシートのプロパティに設定します。 xlSheetHidden を設定すると、シートが非表示になります。 可視 になるようにする。 xlSheetVeryHidden .
Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End Sub選択された範囲内のすべての結合されたセルの結合を解除する
ワークシート全体ではなく、ある範囲に対して特定の操作を行いたい場合は セレクション 例えば、以下のコードは、選択された範囲内のすべてのセルの結合を一挙に解除するものです。
Sub Unmerge_Cells() Selection.Cells.UnMerge End Subメッセージボックスを表示する
ユーザーに何らかのメッセージを表示するには MsgBox このようなマクロの最も単純な例を以下に示します。
Sub Show_Message() MsgBox ( "Hello World!" ) End Sub実際のマクロでは、メッセージボックスは情報や確認のために使われるのが一般的です。 例えば、ある操作(ここではセルのアンマージ)を行う前に、メッセージボックスを表示します。 はい/いいえ Yes "をクリックすると、選択したセルのマージが解除されます。
Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Are you sure to unmerge these cells?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If End Subテストするために、マージされたセルを含む1つ以上の範囲を選択してマクロを実行します。 次のようなメッセージが表示されます。
以下は、難易度の高い作業や時間のかかる作業を自動化する、より複雑なマクロへのリンクです。
- 複数のワークブックから1つのワークブックにシートをコピーするマクロ
- Excelでシートを複製するマクロ
- Excelでタブをアルファベット表記にするマクロ
- パスワードなしでシートのプロテクトを解除するマクロ
- 条件付きで色付けされたセルをカウントして合計するマクロ
- 数字を単語に変換するマクロ
- アクティブシート以外のワークシートを隠すマクロ
- シートの非表示を解除するマクロ
- すべてのカラムの非表示を解除するマクロ
- シートがとても隠れるようにするマクロ
- アクティブシートの改行をすべて削除するマクロ
- 空白行を削除するマクロ
- 1行おきに削除するマクロ
- 空白列を削除するマクロ
- 1列おきに挿入するマクロ
- Excelでスペルチェックをするためのマクロ
- 列から行への転置を行うマクロ
- Excelで列を反転させるマクロ
- 印刷領域を設定するマクロ
- 改ページを挿入するマクロ
Excelのマクロを保護する方法
作成したマクロを他者に閲覧、修正、実行されないようにしたい場合は、パスワードで保護することができます。
マクロをロックして表示
VBAコードを不正な閲覧や編集から保護するために、次のことを行ってください。
- VBA Editorを開く。
- プロジェクトエクスプローラーで、ロックしたいプロジェクトを右クリックし、次の項目を選択します。 VBAProject プロパティ...
- での プロジェクトプロパティ ダイアログボックスで 保護 タブで プロジェクトをロックして表示する をクリックし、パスワードを2回入力し よっしゃー .
- Excelファイルを保存して閉じ、再度開きます。
Visual Basicエディターでコードを表示しようとすると、次のようなダイアログボックスが表示されます。 パスワードを入力して、OKをクリックします。
への マクロを解除する を開くだけです。 プロジェクトプロパティ ダイアログボックスを再度開き、チェックボックスを削除します。 プロジェクトをロックして表示する ボックスを使用します。
注意:この方法は、コードの閲覧や編集を防ぎますが、実行を防ぐものではありません。
マクロを実行しないようにパスワードで保護する
パスワードを知っているユーザーだけが実行できるようにマクロを保護するには、次のコードを追加し、「password」という単語を実際のパスワードに置き換えます。
Sub Password_Protect() Dim password As Variant password = Application.InputBox( "Please enter Password" , "Password Protected Macro" ) Select Case password Case Is = False 'do nothing Case Is = "password" 'your code here Case Else MsgBox "Incorrect Password" End Select End Subこのマクロでは 入力ボックス 機能で、ユーザーにパスワードの入力を促すことができます。
ユーザーの入力がハードコードされたパスワードと一致すれば、コードが実行されます。 パスワードが一致しない場合、「パスワードが正しくありません」メッセージボックスが表示されます。 ユーザーがVisual Basic Editorでパスワードを覗き見できないようにするには、上記の説明に従って、マクロを表示できるようにロックすることを忘れないようにしてください。
注:ウェブ上には様々なパスワードクラッカーが存在するため、この保護は絶対的なものではなく、あくまで誤用に対する保護とお考えください。
エクセルマクロのコツ
Excel VBAのプロは、マクロをより効果的にするために、たくさんの工夫を凝らしています。 以下に、私のお気に入りのものをいくつか紹介します。
VBAのコードがセルの内容を積極的に操作する場合、画面の更新と数式の再計算をオフにすることで実行速度を上げることができます。 コードを実行した後、これを再びオンにしてください。
次の行は、コードの先頭(で始まる行の後ろ)に追加します。 ディム またはその後に サブ の行)。
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual次の行は、コードの最後(の前)に追加してください。 エンド・サブ ):
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomaticVBAのコードを複数行に分割する方法
VBAエディターでコードを記述する際、非常に長いステートメントを作成する場合があり、行末を表示するために水平方向にスクロールする必要があります。 これはコードの実行には影響しませんが、コードの検証を困難にします。
長い文を複数の行に分割するには 空間 に続いて 下線 (_) で改行します。 VBAでは、これを ぎょうへんせいし .
次の行のコードを正しく続けるために、以下のルールを守ってください。
- 引数名の途中でコードを分割しないでください。
- 複数行のコメントを入力する場合は、各行の先頭にアポストロフィ(')を入力します。
- アンダースコアは行の最後の文字でなければならず、他の文字が続いてはならない。
次のコード例は、ステートメントを2行に分割する方法を示しています。
Answer = MsgBox( "Are you sure to unmerge these cells?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )どのワークブックからでもマクロにアクセスできるようにする方法
Excelでマクロを作成・記録した場合、通常はそのワークブックからしかアクセスできません。 同じコードを他のワークブックで再利用したい場合は、個人用マクロワークブックに保存します。 これにより、Excelを開いたときにいつでもマクロが利用できるようになります。
ただ、個人用マクロワークブックはExcelにデフォルトでは存在しないため、作成するには少なくとも1つのマクロを記録する必要があります。 次のチュートリアルで詳細を説明します:Excelの個人用マクロワークブック
マクロ操作の取り消し方法
マクロを実行した後、Ctrl + Zキーや[Ctrl + Z]キーをクリックしても、マクロの動作を元に戻すことはできません。 アンドゥ ボタンをクリックします。
もちろん、熟練したVBAプログラマーは、マクロがワークシートに変更を加える前に、入力値や開始条件を検証することができますが、ほとんどの場合、それは非常に複雑です。
マクロのコード内で、アクティブなワークブックを保存することができます。 そのためには、マクロに何かをさせる前に、次の行を追加するだけです。
ActiveWorkbook.Saveオプションで、マクロのメインコードを実行する直前に、現在のワークブックが保存されたことを知らせるメッセージボックスを表示することもできます。
この方法では、あなた(またはあなたのユーザー)が結果に満足できない場合、単にワークブックを閉じてから、再び開くことができます。
ワークブックにマクロがない場合にExcelのセキュリティ警告を表示しないようにする
このワークブックにはマクロがないとわかっているのに、Excelがマクロを有効にするかどうかしきりに聞いてくるという状況に陥ったことはないでしょうか。
最も考えられる原因は、VBAコードが追加された後に削除され、空のモジュールが残っているため、セキュリティ警告が発生します。 これを取り除くには、単にモジュールを削除し、ワークブックを保存して閉じ、再度開きます。 それでも解決しない場合は、次のことを行ってください。
- について 本作品 で、個々のシートについて、コードウィンドウを開き、Ctrl + Aキーですべてのコードを選択し、削除します(コードウィンドウが空に見えても構いません)。
- ワークブックに含まれるユーザーフォームとクラスモジュールをすべて削除します。
以上、ExcelでVBAマクロを作成し、使用する方法でした。 読んでいただきありがとうございました。また来週のブログでお会いしましょう。