DT Blog

クレスコDTのエンジニアが
IT基礎知識から最新トレンドまで、技術ノウハウを発信

catch-img

VBAの概要と業務への活用案について

初めまして。クレスコ・デジタルテクノロジーズ プロフェッショナルサービス3部の中です。
多くの方が、業務の中でマクロが有効化されたエクセルファイルを扱ったことがあるのではないかと思います。ただ、使い方を教わることはあっても、実際にマクロの作り方を学べるチャンスは意外と少ないのではないでしょうか?
今回は、マクロを作成するための言語であるVBA(Visual Basic for Applications)について、その概要と業務での活用案に関して説明させていただきます。


■あわせて読まれている資料:
対応事例やソフトウェアテクノロジーサービス一覧を掲載!
ソフトウェアテクノロジーサービス

  ソフトウェアテクノロジー資料ダウンロード|株式会社クレスコ・デジタルテクノロジーズ 最先端のデジタル技術の豊富な知見に基づき最も効果的なソリューションを提供します。 クレスコ・デジタルテクノロジーズは、大手電機メーカー様との提携に基づく製造業のノウハウを背景に、2015年4月よりPLM事業を開始。2015年6月には、PLMパッケージであるAras Innovatorを提供している米国Aras社とシステムインテグレーションパートナー契約を締結し、数多くのAras Innovator案件に対応しています。 株式会社クレスコ・デジタルテクノロジーズ


目次[非表示]

  1. 1.VBAとは
  2. 2.VBAを使ってマクロを作成する
    1. 2.1.Excel上でマクロを利用する準備をする
    2. 2.2.VBE(Visual Basic Editor) を起動し、標準モジュールを挿入する
    3. 2.3.処理を記述する
    4. 2.4.エラーが発生した場合記述を確認し、処理が完了するまで修正を行う
  3. 3.業務における効率化案
  4. 4.まとめ
  5. 5.引用元


VBAとは

VBA(Visual Basic for Applications)は、Microsoft Office製品に組み込まれているプログラミング言語で、ExcelやWordなどでマクロを作成・実行するために利用されます。
※マクロとは、ユーザーが手動で行う一連の作業を自動化するために記述された一連のコマンドです。マクロを実行することで、定型的な操作を自動的に繰り返すことができ、日々の業務を効率化できます。


VBAを活用するためには、VBA以外のプログラミング言語において共通する考え方に加え、VBAを扱う上で必要になる考え方を把握しておくことが大切です。 


また、マクロはあくまで処理を自動化したツールであるため、マクロにどんな処理をさせたいのか、作成者が明確に理解しておくことが大前提となります。
そのため、VBAで処理内容を記述する経験を通じて、効率化させたい業務の全体像を把握し、それを適切な粒度で分解する力が養われるかと思います。


VBAの概要については以上となります。
次項では、実際にVBAを使用したマクロの作成について説明します。



VBAを使ってマクロを作成する

VBAを使ってマクロを作成する流れは、大まかに区分して次のようになります。

  1. Excel上でマクロを利用する準備をする
  2. VBE(Visual Basic Editor)を起動し、標準モジュールを挿入する
  3. 処理を記述する
  4. エラーが発生した場合記述を確認し、処理が完了するまで修正を行う


Excel上でマクロを利用する準備をする

Excel上でVBAを扱う際、「開発」タブから操作を行うことがありますが、操作環境によっては開発タブの表示やマクロ利用の準備が済んでいない場合があるので、まずはそれらの設定を済ませておく必要があります。
Excelの実行画面で「ファイル」>「オプション」>「リボンのユーザー設定」の順に押下し、右側のメインタブの一覧にある「開発」のチェックボックスにチェックを入れます。
画面上部に開発タブが表示されたら、開発タブ内の「マクロのセキュリティ」を押下し、セキュリティ設定が適切な状態になっていることを確認します。(明確な理由がなければ、「警告を表示してすべてのマクロを無効にする」にしておけば問題ないと思います)


VBE(Visual Basic Editor) を起動し、標準モジュールを挿入する

マクロを利用する準備が済んだら、実際にマクロの中身を確認・編集してみましょう。開発タブの「Visual Basic」、Alt+F11キーを押下することで、VBE(Visual Basic Editor)を起動することができます。VBEのウィンドウ上で、既存のマクロの中身を確認することもできますが、新規にマクロを作成する場合は、メニューの「挿入」>「標準モジュール」を押下します。
※標準モジュールについて、マクロに処理を行わせるためのコードを入力する入れ物と思っていただければ問題ありません。


処理を記述する

マクロは、Subプロシージャと呼ばれる最小単位を組み合わせて構成されます。
例えば、最もシンプルなマクロの記述は、以下のようになります。


Sub Subプロシージャの名前()
  実際にマクロに行わせる処理の記述
End Sub


赤字部分はどの処理においても共通の記載となり、黒字部分が自由記載となります。
マクロに行わせたい処理によって記載する内容は異なってくるので、行わせたい処理に対してどのように記述すれば目的とした処理を実行させられるかを、都度関数などを調べながらの作成することになると思います。
※完成したマクロファイルが手元にあるのであれば、その中身をVBEで確認し、参考にしてみるのもよいと思います。


エラーが発生した場合記述を確認し、処理が完了するまで修正を行う

作成したマクロを実行した際、文法ミスや関数の指定ミスなど様々な要因でエラーが発生することがあります。


「コンパイルエラー」の記載されたポップアップウィンドウが表示され、記載されたコードが赤字表記に変化した場合は、文法ミス(プロシージャの名前後ろの()記載忘れ等)によるコンパイルエラーが発生している状態となります。赤字表記された部分を確認し、誤った文法がないかを確かめましょう。


また、コードの一部が青色背景色に表示される場合もありますが、その場合はポップアップウィンドウを閉じた後にさらに別の箇所が黄色背景色に表示されるため、その周辺に誤りがあることを表しています。


「実行時エラー」のポップアップが表示された場合、表示されるポップアップの「デバッグ」を押下すると、VBE上でエラー箇所を確認することができます。コードのいずれかの行が黄背景色で表記されている場合は、その周辺に何らかの間違いが存在していることになります。


例えば、マクロの中でセルの番地を参照させた時、存在し得ないセル(0行目のセル等)を指定していたりすると、マクロは処理を一時停止し、「実行時エラー」のポップアップを表示します。この場合は、背景色の変わった行自体に誤りがあるとは限らないので、周辺のコードを読み直し、誤りを特定する必要があります。


以上の流れを踏まえ、マクロ実行時にエラーが発生せず、想定した処理が実行されたことが確認出来たら、作成完了となります。マクロを作成したファイルを保存する際は、「.xlsm」形式での保存が必要なことに注意しましょう。(通常の「.xlsx」形式のファイルには、マクロは保存できません)


業務における効率化案

前段でも触れたように、マクロはExcel等で繰り返し行われる作業を、自動的に行うためのツールとなっています。その利点として、普段手動・目視で確認している作業を機械的に素早く処理させることができる、という点が挙げられると思います。


その上で、業務効率化を目指すための手法として、「文章の添削を行わせるマクロ」といったものが挙げられると思います。メール、手順書、計画書、レビュー資料といったものの中で、作成した文章に日本語的・公用文的な誤りがないかどうかをチェックすることは、目視で行うには時間的に難しい分量の場合も少なくありません。それらの確認を、マクロによる自動処理に落とし込むことができれば、一定の効率化が見込めると考えます。 


このマクロを実現するにあたって、必要な動作を挙げると、大まかに以下のようになります。

 ①添削対象の文章をどのようにして取り込むか
 ②取り込んだ文章をどのように添削させるのか


①の動作に関しては、指定したファイルの特定のセルから値を取得する処理をマクロ上で実現してあげるとよいと思います。例えば、以下のような記載で、マクロファイルと同ディレクトリの指定のファイル・シート・セルに入力された値を取得し、マクロファイルのA1に出力するような処理になります。 

Sub TEST1() 
 Dim Wb1, Wb2
 Set Wb1 = ThisWorkbook 
 Set Wb2 = Workbooks("指定のファイル.xlsx") 
 Wb2.Worksheets("Sheet1").Range("A1:A3").Copy
 Wb1.Worksheets("Sheet1").Range("A1")
End Sub


更にIf文等を利用して、取り込む文章に条件付けをすることで、確認対象の付近のみを取得することも可能になります。取得の条件付けには、文化庁の公用文の一覧内で、注意が必要とされているものや、頻度の高い誤字脱字のデータ等が利用できると思います。


②の動作の実現に関しては、エクセルファイル側で関数を利用したチェックを行うことが一つの案として挙げられます。①で取得した値に応じて、確認が必要と考えられる箇所を指摘する文章を表示することで、その後に必要な修正をスムーズに行えると考えます。その場合は、①の動作で取得した値を、マクロファイル内のどの箇所に出力するかにも注意した上で、必要な箇所に関数を仕込む必要があります。


例として、以下のようにIF関数及びCOUNTIF関数を使用することで、取得した値の中に存在する、誤用の可能性がある表記への指摘文を表示することができます。このような仕組みを組み込むことで、目視以上の効率的な添削を行うことができます。誤用の可能性がある表記の判別には、文化庁の公用文の一覧が利用できると考えます。

=IF(COUNTIF(値を取得したセル,"誤用の可能性のある表記"),"確認を促す表記","OK") 


今回は、文章の添削に注目して効率化案を提示してみましたが、これがプログラムのコマンド文であったり、集計データの整形であったり、その他様々な作業においても、応用は可能です。ただ、例として表示した関数等は、今回の説明における最低限の部分のみを挙げているので、実際の効率化を目指す際には、必要な動作を整理し、マクロ及びExcel内の関数に処理として落とし込む記述を一つずつ積み上げていくことが重要となります。



まとめ

今回は、VBAの概要と業務効率化を進める上での活用法についてご紹介させていただきました。
最初のうちは覚えることが多く、少し大変に感じるかもしれません。しかし、VBAは多くの企業で利用されている技術のため、習得しておいて損はないかと思います。
特に、前任者の作成したマクロファイルを誰も修正・メンテナンスできないような場合、強いアドバンテージになること間違いありません。
ここまで目を通していただき、ありがとうございました。拙い文章ではございましたが、また機会があれば、より深い内容での活用案をご紹介できればと思います。


■サービス資料一覧はこちら↓

  資料ダウンロード一覧|株式会社クレスコ・デジタルテクノロジーズ クレスコ・デジタルテクノロジーズのサービスに関する資料の一覧ページです。 株式会社クレスコ・デジタルテクノロジーズ



引用元

伊藤潔人,『いちばんやさしいExcelVBAの教本 人気講師が教える実務に役立つマクロの始め方』,インプレスブックス(2018)

中 優人
中 優人
部署名:プロフェッショナルサービス3部

おすすめ資料はこちら

最先端のデジタル技術の豊富な知見に基づき最も効果的なソリューションを提供します。
クレスコ・デジタルテクノロジーズは、大手電機メーカー様との提携に基づく製造業のノウハウを背景に、2015年4月よりPLM事業を開始。2015年6月には、PLMパッケージであるAras Innovatorを提供している米国Aras社とシステムインテグレーションパートナー契約を締結し、数多くのAras Innovator案件に対応しています。

CONTACT

社内システムのお悩みを私たちだけで解決へと導きます

お役立ち資料は
こちらから

不明な点はお気軽に
お問い合わせください