【入門編】Excel VBAとは?できることや使い方、勉強すべき言語から資格まで紹介

Excel VBA

Excelの作業に時間がかかり過ぎていませんか?その悩み、ExcelVBAを使用すれば解決できるかもしれません。VBAは、Excel作業を効率化し、日々の業務を自動化するツールです。

本記事で、VBAの役割、基本コード、使い方を学び、実践的なスキルを身につけましょう。

VBAの知識があれば、時間を節約し、より高度なデータ処理や分析が可能になります。

この記事を通じてVBAの基礎を学び、業務効率化をはかっていってください。

監修者 エンジニア takakuni7777

コンピュータの専門学校がプログラミング及び、コンピュータの基礎を学び、その後、日本電気の子会社で働きました。その後、いくつかの開発の仕事を経て,コンピュータの専門学校の講師兼担任を経験し、その後はフリーにてシステムエンジニアやプログラマーの開発の仕事を担当、そのかたわらプログラミングスクールや職業訓練所、企業の新人教育などを担当しました。 25年以上のシステムエンジニア、プログラマーの仕事の経験があります。

\エキスパートが回答!/
この記事に関する質問はこちら
記事に関するご質問以外にも、システム開発の依頼やAIの導入相談なども受け付けております。

    会社名必須
    必須
    必須
    Eメール必須
    電話番号必須
    ご依頼内容必須

    Excel VBAとは?


    VBAは「Visual Basic for Applications」の略で、ExcelやWordなどのMicrosoft Office製品を自動化するためのプログラミング言語です。Excel VBAを使用すると、繰り返しの作業を自動化したり、複雑な計算を簡単に行ったりすることができます。

    例えば、データの集計、レポートの生成、グラフの作成など、日常の煩雑なタスクを効率よく処理することが可能になります。

    また、VBAはオブジェクト指向の言語であり、Excelの機能を拡張してカスタマイズすることもできます。

    Excel VBAでできること


    VBAは、業務の効率化と自動化に大きな役割を果たします。手動で行うには時間がかかる作業を自動化することで、作業時間の短縮とヒューマンエラーの減少を実現します。

    また、VBAを使用することで、データ分析、複雑な計算、フォームの作成、データベースとの連携など、Excelの機能を最大限に活用することができます。

    Excel作業を自動化

    Excel VBAを用いると、日常的なExcel作業を効率的に自動化できます。例えば、売上データの拠点別や部署別の集計、定型的なグラフの作成、PowerPointへのグラフ挿入などが簡単に行えます。これにより、手作業による時間の浪費やミスを削減し、他の業務に集中することが可能になります​​。

    PDF資料の操作を自動化

    Excel VBAを用いてPDF資料の操作を自動化することは、特にデータ処理やレポート作成において非常に効果的です。具体的には、複数のPDFファイルに散らばっているデータを一元化し、迅速に処理することが可能になります

    また、VBAを使ったPDFのデータ抽出は、データの正確性を保ちながら作業を行うことができるため、手作業による入力ミスを防ぐ効果もあります。データが正確であることは、特に財務報告や重要なビジネスシーンにおいて非常に重要です。

    インターネット情報取得の自動化

    Excel VBAを使用すると、インターネットからのデータ取得を効率的に自動化できる点は、ビジネスにおける市場調査や競合分析において非常に重要です。特に、ウェブ上の情報を定期的に監視し、分析する必要がある業務において、この機能は大きな価値を提供します。

    たとえば、競合他社のウェブサイトから新製品のリリース情報や価格変動、プロモーション活動などのデータを自動的に収集し、それらをExcelで管理しやすい一覧表にまとめることが可能です。

    また、業界のニュースサイトやブログから業界のトレンド、技術の進展、市場の変化に関する情報を集め、それを定期的なレポートに組み込むこともできます。

    この自動化プロセスの最大の利点は、大量のデータを短時間で収集し、それを分析用に整理できることです。これにより、従来は手作業で時間を要していた作業を劇的に短縮し、より戦略的な分析や意思決定にリソースを集中させることができます。

    ワード・パワーポイント作業を自動化

    VBAを用いると、Word文書やPowerPointプレゼンテーションの作成と編集作業も自動化できます。

    Wordにおいては、VBAを使用して定型文書の自動生成が可能です。例えば、契約書や提案書など、似たフォーマットの文書を大量に作成する場合、テンプレートから必要な情報を自動で挿入し、個々の文書を迅速に生成できます。これにより、手作業でのデータ入力の時間を省き、文書ごとの一貫性と正確性を保つことが可能です。

    PowerPointの場合、VBAを利用してプレゼンテーション資料の作成を自動化できます。

    たとえば、Excelで処理されたデータやグラフをPowerPointスライドに直接転送し、迅速かつ効率的にプレゼンテーションを作成することが可能です。さらに、スライドのフォーマットやデザインを統一して適用することで、資料のプロフェッショナルな見た目を保証できます。

    これにより、報告書やプレゼンテーション資料の作成時間を大幅に削減し、品質の向上にも繋がります​​。

    アプリとの連携

    Excel VBAは他のアプリケーションとの連携が可能で、例えばAccessと連携して簡単なデータベースを開発することができます。操作画面をExcelで設計し、背後でAccessのデータベースを利用するようなシステムを構築することが可能です​​。

    このようなシステム構築を得意とするのがJiteraです。

    Jitera

    Jiteraは、Excel VBAとアプリケーションの連携を一から行い、業務の効率化のためのツール自体を最新AI技術を駆使して開発をします。

    「どのようなことをしたいのか」「どのような問題を解決したいのか」などの要件定義を書くだけで、AIがすぐに最適なシステムを構築してくれます。現在では、大手企業のCalbeeやGMOなどでも導入されています。

    Jitera導入の相談はいつでもでき、無料のデモンストレーションができる画面もあるので、興味のある人はぜひ試してみてください。

    Jiteraへの相談はこちら

    メールの一斉送信

    VBAを使って、Outlookでのメール一括送信を自動化できます。Excelに保存された顧客情報(メールアドレスや氏名、会社名など)を用いて、テキストで作成されたメール本文を一括送信することが可能です。

    これにより、大量のメール送信作業を効率化し、誤送信のリスクも軽減できます​​​​。

    ExcelVBAの使い方


    Excel VBAを学ぶ上で最も重要なのは、VBAの書き方を理解することです。

    このセクションでは、VBAを書き始める前の準備から、基本的なプロシージャの作成、実行方法までを順を追って解説します。
    ※基本的な書き方なので、実務的なプログラミングをするにはさらに様々な知識が必要となります。

    VBAエディタの開き方

    まず、最初はメニューに【開発】を表示するようにします。※初期設定では【開発】タブが表示されてません。

    メニューから、「ファイル」→「その他」→「オプション」と選択します。※こちらはサブスクリプションのOffice365の画面になるので、他のバージョンだと少し違っているかも知れません。どちらにせよオプションを選択してください。

    オプションの画面から、「リボンのユーザー設定」を選びます。

    [開発]のチェックボックスをオンにし、[OK]ボタンをクリックすると開発タブが表示されます。開発タブにはマクロの記録、編集、VBAコードの作成などの機能があります​​​​。

    VBEを開く

    VBAのコーディングを始めるためには、VBE(Visual Basic Editor)を開く必要があります。

    開発タブの中の「Visual Basic」メニューをクリックするか、キーボードの「Alt」+「F11」キーを同時に押すことでVBEが開きます。VBEはVBAを書くためのエディタで、コードの入力、編集、デバッグを行う場所です​​。

    下記がVBEの画面になります。

    標準モジュールを選択

    VBE内で新しいVBAコードを書くためには、標準モジュールを挿入する必要があります。挿入タブから標準モジュールを選択し、新しいモジュールウィンドウを開きます。これがVBAコードを書くための場所となります。

    ※他にもクラスを作成するクラスモジュールや、入力画面を作成するユーザーフォームが作成できます。※クラスはオブジェクト指向プログラミングで使うものですが、ここでは説明を省かせていただきます。

    Subプロシージャの作成

    VBAコードは通常、Subプロシージャ(マクロ)として記述されます。新しいモジュールウィンドウで「Sub マクロ名」と入力し、Enterキーを押すと、空のマクロが作成されます。この中に具体的なVBAコードを書いていきます。

    ※Subプロシージャの他に、Functionプロシージャ(関数)も定義することができます。関数は戻り値を持つものでEXCELに用意されている通常の関数のような働きをします。

    VBAで処理を書く

    Sub プロシージャ名~End Subの間にプログラムを書きます。

    この時VBEでは、自動補完機能と呼ばれるものがあり、単語の頭の文字を入力する続く文字を選択して選べるようになっています。

    Subプロシージャ内にVBAのコードを記述します。基本的なコードには、変数の宣言、条件分岐、ループ処理などが含まれます。これらのコードを組み合わせて、Excelの操作を自動化するスクリプトを作成します。

    コードの例

    Sub SumCells()
    Dim value1 As Double
    Dim value2 As Double
    Dim result As Double’ A1とB1の値を取得
    value1 = Range(“A1”).Value
    value2 = Range(“B1”).Value’ 値を足す
    result = value1 + value2′ 結果をC1に書き出す
    Range(“C1”).Value = result
    End Sub

    上記のコードは、セルのA1とA2に入っている値を足して、C1に入れるというプログラムになります。 Dimは使う変数を定義するものです。(変数とは値を入れておく箱のようなものです。)Range(”A1″)は、EXCELのVBAの特徴でセルをVBAで選択する時に使います。他に複数のセルを選択するのにcells(2,3)という定義の仕方もあります。

    実際に以下のようなシートがあると、

    上記のプログラムを実行すると

    C1のセルに自動的に3が入ります。

    他にどのようなプログラムを書けばよいか迷う時に「マクロの記録」という機能を使う手があります。

    メニューから「マクロの記録」を選んで、クリックして

    マクロ名を入れて、OKをします。その後に記録したEXCELの操作をすると。(ここでは印刷の操作をしてみます。)。

    印刷を選択して、「印刷」をクリックします。

    印刷が終わったら、記録終了をクリックします。

    マクロをクリックして

    Macro4を選択して、編集をクリックします。

    Macro4で印刷をするVBAのプログラムが表示されます。Macro4を実行するとシートが印刷されます。というようにVBAのプログラムを作成することもできます。

    マクロ(VBAのプログラム)を実行

    Excel VBAで作成したマクロを実行するにはいくつかの方法があります。

    VBAの開発環境から直接実行する方法です。

    基本的な方法で、開発者がコードのテストを行う際に便利です。実行したい関数をクリックし、(この時、Subの文字のとこれでカーソルが点滅します。)その状態で、キーボードのF5キーを押します。

    ツールバーから「Sub/ユーザーフォームの実行」を選択して実行します。(▷のマーク)

    Excelの画面からマクロを選択し実行する方法もあります。

    これには、「表示」タブから右端の「マクロの表示」を選び、実行したいマクロを選択して「実行」ボタンをクリックします。

    マクロを選択して実行を押します。

    ショートカットキーを設定してマクロを実行することも可能です。

    「開発」タブを開いてマクロをクリックします。

    マクロ(VBAプログラム)を選択して、オプションをクリックします。

    設定したいショートカットキーを設定します、

    ボタンなどのコントロールを配置して、マクロを実行することもできます​​​​​​​​。

    開発タブから「挿入」をクリックします。

    フォームコントロールのメニューから、一番上の左端の「ボタン」のアイコンをクリックします。

    マクロの選択画面がでてくるので、設定したいマクロ名をクリックします。

    ボタンを設定したいセルにボタンを設置します。(+のカーソルが出るので、設置したいセルでクリックする。)

    ボタンをクリックするとマクロ(VBAプログラム)が実行され、C1に計算結果の3が設定されます。

    デバッグを行う

    デバッグはソフトウェア開発において非常に重要な工程であり、プログラムの品質を向上させるために欠かせません。VBEを使うことで、コードの実行を一時停止し、変数の値を確認したり、ステップ実行を行ったりすることができます。

    プログラムを途中で中断させるには、中断したいコードの一番左側のところでマウスをクリックするか、キーボードのF9を押します。表示に〇と茶色のマーカーがコードにつきます。

    この状態でF5または「Sub/ユーザーフォームの実行」を選択して実行します。(▷のマーク)を押して実行すると、

    中断したいところで止まります。(マーカーが黄色になります。)

    1行づつ実行(ステップイン)させるには、F8を押します。実行される行に⇒と黄色いマーカーがつきます。

    変数の名前のところにマウスを持っていくと、その時に入っている値が表示されます。

    値を確認するのに、ウオッチ式に登録するやり方もあります。

    変数の名前を選択し、右クリックでメニューを表示し、「ウオッチ式の追加」を選択します。

    ウオッチ式に登録する値の名前を確認してOKをクリックする。

    ウオッチ式に登録した変数の値が、ウオッチのウインドウに表示されます。

    ステップインで実行していくと、値が変化することが確認できます。

    上記のような機能をつかって、VBEでデバッグをすることができます。

    VBAとマクロの違い

    項目 VBAプログラム マクロ
    定義 VBAで書かれた一連の命令や手続きを含むプログラム。 特定のタスクを自動化するための簡単なスクリプト。
    機能の複雑さ 複雑なロジックやアルゴリズムを実装可能。 比較的単純な操作や手順を自動化。
    構造 モジュールや関数を持ち、再利用性が高い。 通常は1つのサブプロシージャで構成。
    デバッグ 高度なデバッグ機能があり、エラー処理が可能。 基本的なエラー処理が難しいことがある。
    実行方法 VBAエディタから実行することが一般的。 Excelの「マクロ」メニューから簡単に実行できる。
    ユーザーインターフェース フォームやダイアログボックスを作成可能。 基本的にシンプルな操作で完結。
    用途 業務アプリケーションや複雑なデータ処理に適している。 日常的なタスクの簡単な自動化に適している。

    マクロはExcel内で繰り返される作業を記録し、自動実行する機能です。一方、VBAはマクロをより高度に制御し、カスタマイズするためのプログラミング言語です。マクロは簡単な作業の自動化に適していますが、VBAを使うことでより複雑な条件分岐やループ処理、他のアプリケーションとの連携などが可能になります。

    関連記事
    VBAとマクロの違いは?エクセルでできることや活用方法を初心者向けに解説
    VBAとマクロの違いは?エクセルでできることや活用方法を初心者向けに解説

    Excel VBAの基本構文

    Excel VBAのプログラミングを学ぶ上で、基本構文の理解は不可欠です。このセクションでは、VBAのプログラムの基礎であるサブルーチン、変数、条件分岐などの基本構文について詳しく解説します。これらの基本を押さえることで、VBAを使った効率的なプログラミングが可能になります​​。

     VBAの基本構文

    VBAの基本構文には、サブルーチンの作成、変数の宣言と値の代入、オブジェクトとコレクション、プロパティとメソッドの使用などが含まれます。サブルーチンは、VBAのプログラムを構成する基本単位で、特定のタスクを実行するコードのブロックです。

    変数はデータを一時的に格納するために使用され、VBAで変数を宣言するにはDimステートメントを使用します。例えば、Dim myVar As Integerは、myVarという名前の整数型変数を宣言する方法です。

    オブジェクトは、Excel VBAで操作する要素(セル、ワークシートなど)を指し、それに対する操作はプロパティやメソッドを通じて行います。たとえば、Range(“A1”).Value = 100はA1セルに100を代入するコードです​​​​。

    Excel VBAの基本コード

    Excel VBAの基本コードを理解するために、具体的な例を挙げて解説します。Excel VBAでは、セル範囲の操作、条件分岐、ループ処理などが基本的なコードの要素です。例えば、セル範囲を操作する基本的なコードは、Range(“A1:B2”).Selectのように書きます。これはA1からB2までのセル範囲を選択するコードです。条件分岐ではIf、ElseIf、Elseステートメントを用いて、特定の条件に基づいて異なる処理を行うことができます。

    ループ処理にはForループやFor Eachループがあり、同じ処理を繰り返し行う場合に使用します。例えば、For i = 1 To 10は、iが1から10までの値を取るときに指定したコードを繰り返すループを作成します​​。

    これらの基本構文を理解することは、Excel VBAを使いこなすための第一歩となります。

    関連記事
    【初心者向け】VBA Excel rangeとは?セルの指定方法や活用例まで紹介
    【初心者向け】VBA Excel rangeとは?セルの指定方法や活用例まで紹介

    実用的な例

    以下は、Excel VBAの実用的な例として「データのフィルタリングと集計」を行うコードです。このスクリプトは、特定の条件に基づいてデータをフィルタリングし、フィルタリングした結果の合計を計算して表示します。具体的には、以下のような動作をします。

    • シート1のA列に「商品名」、B列に「売上」があると仮定します。
    • 「商品名」に基づいて売上をフィルタリングし、合計を計算します。
    • 結果をシート2に出力します。
    Sub FilterAndSumSales()
    Dim wsData As Worksheet
    Dim wsResult As Worksheet
    Dim lastRow As Long
    Dim criteria As String
    Dim totalSales As Double
    Dim cell As Range’ シートの設定
    Set wsData = ThisWorkbook.Sheets(“Sheet1”) ‘ データがあるシート
    Set wsResult = ThisWorkbook.Sheets(“Sheet2”) ‘ 結果を出力するシート’ データの最終行を取得
    lastRow = wsData.Cells(wsData.Rows.Count, “A”).End(xlUp).Row’ フィルタリングする商品名を入力
    criteria = InputBox(“売上を集計したい商品名を入力してください:”, “商品名入力”)’ 合計を初期化
    totalSales = 0

    ‘ データをループして合計を計算
    For Each cell In wsData.Range(“A2:A” & lastRow) ‘ A2から最終行まで
    If cell.Value = criteria Then
    totalSales = totalSales + cell.Offset(0, 1).Value ‘ B列の売上を加算
    End If
    Next cell

    ‘ 結果をシート2に出力
    wsResult.Cells(1, 1).Value = “商品名”
    wsResult.Cells(1, 2).Value = “合計売上”
    wsResult.Cells(2, 1).Value = criteria
    wsResult.Cells(2, 2).Value = totalSales

    MsgBox “合計売上は ” & totalSales & ” です。”, vbInformation, “集計結果”
    End Sub

     

    使用方法:

    • 1. Excelを開き、データシート(例: Sheet1)にA列に商品名、B列に売上を入力します。
    • 2. `Alt + F11` を押してVBAエディタを開きます。
    • 3. `挿入` > `モジュール`を選択して新しいモジュールを追加します。
    • 4. 上記のコードをコピーして貼り付けます。
    • 5. `F5`を押すか、`実行`メニューから`サブユーザープロシージャの実行`を選択して、コードを実行します。
    • 6. ポップアップが表示されるので、集計したい商品名を入力します。

    以上の操作により、指定した商品名の売上合計がシート2に表示され、メッセージボックスにも結果が表示されます。この例は、実用的なデータ処理の一つとして、フィルタリングと集計の基本的な使い方の例です。

    まとめ:Excel VBAで作業を自動化しましょう

    この記事では、Excel VBAの基本から応用技術、そしてその効果的な使用方法までを詳しくご紹介しました。

    VBAは、

    • Excel作業の自動化
    • PDF資料の操作
    • Web情報の取得
    • 他のアプリケーションとの連携

    など、多岐にわたる業務を効率化する便利なツールです。

    また、VBAの基本構文や基本コードについても詳しく解説し、VBAの書き方をステップバイステップで紹介しました。

    もし、VBAを使った業務効率化に関してさらに詳しい情報や、個別の課題に対するソリューションをお探しの場合は、実績豊富な株式会社Jiteraに一度ご相談ください。貴社の要件に対する的確なアドバイスが提供されると期待できます。

    株式会社Jiteraはこちらから

    例:開発手順、ツール、プロンプト

    メルマガ登録

    社内で話題になった「生成AIに関するニュース」をどこよりも早くお届けします。