マクロって何?VBAって何?

Excel開発コラム

マクロって何?VBAって何?

投稿日: 2017年03月29日 カテゴリー:Excelシステム開発

「マクロ」とは、マイクロソフト社の Office 製品にもともと含まれる「操作手順の自動記録」機能のことです。

 

「操作の自動記録」といっても、実際にこの機能を実践活用されている方がどれだけいるでしょうか?とても便利な機能ではありますが、私の知る限り、あまり活用されていないのが実情のようです。その理由は3つあるように思います。

 

 

 

  1. (1) マクロ機能の「存在」そのものが認知されていない。また、「使い方」がわからない。
    (2)操作手順が自動記録されるが、あまりに忠実に再現するため、汎用性がない。
  2.    つまり、記録内容の一部を変更しない限り、流用や応用が利かない。
    (3)部分修正での挫折。
  3.    大変便利なものの立派な「プログラミング言語」の為、英語で表示され意味がさっぱり理解できない。

マクロ(Macro)活用の事例

前職で、全社的な「業務改善プロジェクト」が発足された際、特にデスクワークを中心とする総務、経理、営業事務、設計、営業、開発、製造など、事務部門パソコン活用の現状分析を行ったのですが、ある事務部門の女性が「Excel マクロ」を有効活用していたことに、たいへん感心したことがあります。

 

  1. 自動化していた事は、次の処理でした。
  2. (1)サーバ内の「在庫表」を開き、「商品 A グループ、且つ、数量が指定数以下のアイテム」を
  3.    フィルター機能で抽出
  4. (2)抽出されたデータ群を、別シートにコピー&ペースト
  5. (3)作成されたデータ群を日付順・在庫数をキーに並び替え
  6. (4)本日の日付をファイル名称にして、自身のパソコンに自動保存。

プログラム経験があるわけでもなく、繁忙期の欠品や出荷トラブルを回避するため、自力で作業効率化に取り組む姿に感心しました。

 

上記の手順(※計5パターン)を「マクロ」ではなく、手作業で行う場合、Excel に慣れている方で、20分。慣れていない方なら、1時間。マクロ活用なら、5 秒・・・。

 

のように、作業性/生産性に大きな差がでてくるのですから、このようなケースでは、マクロはとても強力なツールとなってくれる訳です。

 

もちろん、人間の手作業ではありませんから、ミスも発生しないため、抽出されたデータのチェックも必要となるなど、「マクロ活用」の典型的な成功例だと思います。

 

一方で、マクロにも弱点があり、その弱点をご紹介いたします。

 

マクロ記録では、出来ない3つのこと。

  1. (1)条件判定:
  2.    発注元が A 社だったら、特別値引きで計算
  3. (2)LOOP 繰り返し処理
  4.    シート内のデータが無くなるまで、上から順に処理
  5. (3)メッセージ表示
  6.    処理中に、不正データが検出されたら「データが不正です」などメッセージ警告

などが挙げられます。
「マクロ活用の事例」でご紹介した例は、「マクロで出来ない3つのこと」に影響を受けない処理の自動化だったため、有効活用が行えたと言えるでしょう。

 

Excel データ編集や加工、集計などの自動処理では、その一部分だけでも自動化されれば恩恵を得られることもありますが、現場実務において、「条件判定、LOOP 繰り返し、メッセージ処理」は、作業効率化に欠かせない機能であることを、マクロ活用に取り組む方々が実感していることでしょう。

 

Excel VBA(ブイ・ビー・エー)

マクロ言語の実態でもある VBA は、正式には、「Visual Basic for Application(ビジュアル・ベーシック・フォー・アプリケーション)」と称します。

 

「Basic(ベーシック)」という言葉を一度は聞いたことがあるかも知れませんが、マクロ機能により記録された手順内容は、この VBA という言語によって、Excel 内に記述されるため、「マクロ」とは、機能の名称でもありますが、その実態は、「プログラミング言語」でもあるのです。

 

VBA は、立派なプログラム言語なので、マクロで出来なかった「条件判定、LOOP 繰り返し、メッセージ処理」をはじめ、フォルダ操作はもちろん、ブックやシート、セルや図形など、Excel で行える全ての機能を制御することが可能なため、マクロでの限界は、VBA で解決を図ることが、もっともコストのかからない、BEST な選択と言えるでしょう。

 

ExcelVBA は、その名のとおり、Excel アプリケーション上で動作するプログラミング言語です。
そのため、Excel が正常に動作するパソコン上で、Excel が正常にインストールされていなければ、動作も行えません。

 

様々なプログラム言語が存在するなかで、何故、「ExcelVBA」なのか?

といった言語の選択については、Web アプリケーションや、携帯アプリ、制御ロボット、事務計算など、それぞれ言語誕生の背景から、得意分野というものが存在しますが、

 

・開発コスト
・修正メンテナンス性
・使用ライセンス料の発生有無
・取扱いデータ量

 

などの観点から比較した場合でも、一般的に、Excel 中心の業務を効率化するのであれば、システム開発というよりも、「ExcelVBA ツール活用」で、十分対応できると言っても過言ではないでしょう。

 

マクロ記録で行うデータ抽出の自動化

ここでは、以下のようなデータ群(※顧客マスタ)の中から、「都道府県=岐阜県」の方だけを抜き出し、隣のシートに結果を作成する、という処理をマクロ記録した場合を、実際の例でご紹介させていただきます。

※左記データは、「デモデータ作成ツール」によりランダム生成された、実在しない情報です。

 

 

 

 

 

 

 

 

 

 

[OK]ボタンが、[記録開始]ボタンです。
このボタンを押すと、以下の画面が表示され、 [OK]を押した直後から、Excel 上でおこなった全ての動作が、順に記録されます。

 

 

 

 

 

記録する手順は次の内容です。
(1) まず、先頭シートに対し、フィルターを適用します。
(2)次に、フィルターの抽出条件に対し、F 列の都道府県が「岐阜県」と指定します。
(3)対象データが抽出されるので、表示された内容をコピーします。
(4) コピーされた内容を、新規シートを作成し、そのシートに貼り付けます。
(5)以上の4つのステップで、特定条件の「データ抽出マクロ」が完成です。

 

この例では、単純に特定データを抽出するだけでしたが、「データの並び替え」や「指定列の削除」や、「入れ替え」、「書
体や文字サイズの変更」など、日頃、Excel で行っている定型作業であれば、記録~再現が簡単に行えるようになります。

 

 

 

 

では、記録された内容を見てみましょう。
「岐阜県」以外は、すべて英文で表記されています。これが、VBA そのものであり、まさに、プログラム言語の中身です。
「マクロ記録した操作手順」が、「VBA」という「プログラミング言語」で記述されました。
記録は誰でも簡単に行えるわけですが、この中身を修正する・・・・という作業は、各ステートメントが何を行っているのか知らなければ、意図したとおりの動作は行えません。

 

その為、市販の書籍や Web サイトなどを頼りに、学習に取り組むものの、結局、断念してしまうケースが多いのかもしれません。
何故なら、「Basic というプログラミング言語と向き合うことになる」訳ですから、経験や下地がなければ、ストレスを感じることとなるでしょう。 (※補足:岐阜県を東京都に修正するだけで、抽出結果はそれに伴い変更されます。)

 

以上、ざっくりでしたが、「マクロ」と「VBA」について、ご紹介させていただきました。

資格試験の場合は別として、何よりも大切なことは、「両者の違いを的確に説明できるかどうか。」ではなく、「マクロや
VBA が、どんな利便性を秘めているかを知ること。」だと私は思います。

 

 

VBA の得意なデータ処理とは?

(1)データ変換の自動化
例)勘定奉行のデータを弥生会計のフォーマットに変換~弥生への手入力作業をなくす。
(2)Excel データの集計
例)アンケート調査結果の自動データ集計や、フォルダ内の全 Excel ファイルの一覧表作成
(3)Excel 業務のシステム化
例)輸出書類の作成や、?動産契約管理、旅費精算など、集計や帳票作成などの自動化

 

企業ではどんな部門/用途で活躍?

(総務・経理)

勤務表、出張旅費/経費/仮払金精算、残業申請書、部門別経費一覧表、支払通知書・・・。
(営業)

見積書、請求書、納品書、注文書、売上&予算実績管理表、利益計算書、部門別売上一覧表、
製品別利益一覧表、商品/取引先マスタ管理、顧客管理・・・。
(人事、製造・設計)

人事考課票、部門別異動管理表、ロット管理一覧表、工程管理表、在庫表、棚卸し管理表、部
品管理表、発注先一覧表

 

マクロ記録で出来る「自動化」とは?

(1)「特定」の場所の、「特定」のファイルを開く

(2)「特定」のデータ範囲を、「特定」のキーで、並べる
(3)「特定」の列を、別シートの「特定」の列へ自動で転記する

(4)「特定」のデータを元に、「特定」のグラフを生成する

 

などなど、全てにおいて、「特定の」という但し書きのような文言が付きまとってしまいます。
だからと言って、決して「使えない」訳でもありませんし、膨大なデータを毎日のように一定の処理を行うようなケースでは、たいへん有効な効率化手段にも成り得るわけです。

 

プログラミング経験のない方にとって、本業をよそに片手間で VBA 徹底活用を行うことは、たいへん敷居の高い作業でもありますが、あなたの会社でも、誰に知られることもなく、業務改善に取り組むスタッフがいるかもしれません。

 

おわりに

マクロは、Excel だけでなく、皆さんにおなじみの「Word」、「PowerPoint」、「Access」にもちゃんと実装されていることをご存じでしたか?

 

Word は、表計算ソフトと事なり、ワードプロセッサですので、集計やレポート作成などを行う機会がないため、マクロが活躍する場面は私も想像がつきませんが、企業での事務作業の多くは、実は、「定型作業」がたいへん多いことに驚かされます。

 

PowerPoint の場合は、Excel で作成したグラフや表を貼り付け、自動レイアウトを行うなど、マーケティング調査会社様では広く活用されているようです。

 

そんな小さな定型作業の効率化に、高額システム投資を行うなんて「もったいない。」というのが私の持論ですが、これを機に、「マクロ機能」の存在を知っていただき、「出来ること」と「出来ないこと」、「苦手なこと」と「得意なこと」を、知ることで、少しでも皆様のお仕事の効率化手法について、ご参考お役立ていただければ幸いに存じます。
お近くに、「マクロ活用」や「小規模システム導入」など、ご相談できるシステム会社様がいらっしゃらない場合は、Excel 専門の弊社まで、お気軽にご連絡をいただければ幸いです。


業務効率化ご案内

Excel業務効率化支援ツール

 

業務効率化セミナー情報

 

RPAアシロボ業務自動化



株式会社セルネッツ