VBとVBAの勉強方法

今回取り上げますのは「Visual Basic」です。Visual BasicはWindowsによって開発されたプログラミング言語または開発環境のことです。

プログラミング言語のBASICをベースとしており、文法が自然言語に近いため、プログラミング初心者にも比較的習得しやすく、また使いやすいと言われています。そのため、プログラミング初心者からプロにまで長年使われています。

その証拠に、TIOBEの発表するプログラミング言語ランキング(TIOBE Programming Community Index)でも、依然として上位(13位)にランクインしています。

今回は、「Visual Basic」とマイクロソフトOfficeの拡張機能として提供されている「VBA(Visual Basic for Applications)」の魅力を確認していきましょう。

VB.NETとは

マイクロソフト社は、長年BASIC言語の開発を手がけてきました。1970年代から1980年代にかけて、様々なパソコンにマイクロソフトが開発したBASICが最初から組み込まれました。

新しいWindows OSが発表されると、その機能を利用したアプリを開発するための新機能が、次々とVisual Basicに搭載されていきました。つまり、Visual Basicの歴史は、Windowsと共にあったと言えます。

そして、マイクロソフトは、専用アプリの開発用だけでなく、製品を自動化するマクロとしても、Visual Basicを投入していきます。その最たるものが、Microsoft Officeに搭載されている、VBA(Visual Basic for Applications)です。

そして、2002年にVisual Basicは『.NET Framework』に対応し、新しい言語「Visual Basic .NET(VB.NET)」としてリリースされました。

Visual Basic .NETでは、オブジェクト指向に対応したり、エラー処理が追加されたりしています。動作速度が高速になっただけでなく、他の.NET Framework言語と同じ機能が使えるようになりました。

コンパイラはマイクロソフトから無料で提供されているので、Windows付属のメモ帳等を使ってプログラムすることもできるが、専用に開発された統合開発環境を使って開発するのが一般的です。

旧来のVBは、アプリケーションの実行速度性能に問題がありましたが、実行環境を.NET Frameworkに移したVB.NETでは、他の.NET言語と比較して速度面でも遜色ないものとなっていいます。

VB.NETの特徴

  • 自然言語に近く、とにかく簡単でわかりやすい
  • 独特の開発スタイル
    (フォーム上にマウスでボタンやエディタなどのGUIパーツを配置)
  • そのまま仕事で使える
  • 関数など機能の多さ

Visual Basicが人気なのは、プログラミング初心者に優しいBASIC言語が使えることに加えて、フォーム上にマウスでボタンやエディタなどのGUIパーツを配置していくスタイルで開発ができることが挙げられます。

IT教育で使われているくらいなので、比較的少ないコストである程度のレベルまでいけます。

古い技術を動かし続けている職場では、「VB version6」というものがまだ動いています。「.NET Framework」というものが入っていれば、どこでも動かせますので、業務用システムでも利用されています。特に実装にコストをかけたくないユーザーが操作する部分などで使用されます。

なお、.NET(ドットネット)と呼ばれるものには、C#.NETASP.NETなど、似たように使えるものもあります。

VB.NETの得意分野

VBはマイクロソフト社が作っていることもあり、基本的にはWindowsコンピュータ上で利用します。(デスクトップ・アプリケーション

VBの得意な分野は、ユーザー・インターフェースです。すなわち、ユーザーが直接触れるプログラムを担当しています。ボタンテキストボックス等の各部位が、部品のようにまとまったプログラムになっているので、まるで、ブロックやプラモデルを組み立てる感覚でプログラミングが簡単です。

ボタンやテキストボックス等のユーザー・インターフェイスが作れます。また、ファイル操作や、文字列操作、印刷処理、画像処理などの、プログラミング言語として基本的な処理は、一通り可能です。通信機能(TCP/IPを使ったソケット通信等々)や、データベース操作などの応用分野の機能も豊富です。

さらに、エクセル操作といった、VBAに該当する処理も可能です。

VBの将来性(VB.NETはオワコン)

先程、VBは初心者向けのプログラミング言語と言いましたが、あくまでもWindows環境の処理向けで、汎用性に欠けることから人気は下降傾向にあります。他言語を学ぶ際の基礎ぬつながらないので、これからプログラミングを習得しようという方にオススメはしません。

プログラミング言語を習得したい方には、基本的に同じ言語でもある「C#.NET」をお勧めします。

C#はWindows環境のWEBアプリケーション開発以外にXamarinやUnityなどのクロスプラットフォームでの開発で利用されています。スマートフォンアプリの開発でも利用できる言語ですので、押さえておくと良いでしょう。



VBAとは

Microsoft Officeの拡張機能として提供している「VBA(Visual Basic for Applications)」はVBと同等の機能を持っています。VBAはMS Officeに付属されており、ローカル環境で使用できるため、初めてのプログラミングとしてもオススメです。VBAを使って、毎日のようにある定型業務を自動化することで、業務効率化を実現することができます。

※VBとVBA

「VB」は、VBAの基になっているプログラミング言語で、VBをマイクロソフト社のアプリケーション用にしたものがVBAです。VBは単体で動作できますが、環境設定は必要なため費用が掛かります。

一方、VBAはVBと比べると機能に多少の制限があるものの、MS Officeさえあればすぐに使うことができます。そのため、初心者にはVBAの方がオススメです。

VBAのメリット

  • 仕事を通して学べる
  • 日本語の情報がたくさんある
  • 開発環境が不要
  • 特別な開発環境必要ない

繰り返し行う作業をVBAで自動化しておくことで、業務や作業を効率化できます。毎日、毎週、毎月必ず行う業務や、手続きが複雑な処理などは、VBAでの自動化に向いています。

ですので、働き方改革において、生産性向上の実現手段としてBIやRPAと共に注目を集めています。

また、「マクロ」により自動的に動作を記録させることで、MS Officeをカスタマイズでき、自作のアプリケーションのように使うことも可能です。エクセル だけでなくワード やアクセスと連携させたり、入力フォームを作成してデータ入力のミスを防いだりもできます。手作業による人為的ミスが減少でき、自分の操作しやすいツールに変えられます。



VBA(エクセル)を使うことでどんなことができますか

VBAには、多くの機能や活用方法があります。ここでは業務用の処理を中心にVBAの主な機能・活用事例をご紹介します。

エクセルデータの計算、並べ替え、書式の変更

VBAの代表的な機能は、エクセルで膨大なデータを集計・分析する処理です。

○ワークシートの操作
○ワークブックの操作
○グラフの操作
○ピボットテーブルの操作
○オリジナル関数の作成
○単純な四則演算やソート、検索、集計など、エクセルの機能を利用して帳票を自動的に作成
○ほかのエクセルファイルからデータを取り込んで処理
○文字列一括変換
○メール一括送信

定型ファイルの作成

エクセルだけでなく、ワードやパワーポイントで作成したファイル、PDFやCSV形式のファイルなどを取り込んで、帳票や報告書を作成できます。
○印刷・PDF出力とその設定
○CSVなどテキストファイルの入出力
○ファイルやフォルダの操作

サーバーログを利用したログ解析

VBAでサーバーのログファイル(テキストファイル)を読み込み、エクセルで解析できます。Microsoft社のログ解析支援ツール「Microsoft Log Parser」を使用し、結果をCSV形式のファイルで出力、VBAでレポートを作成するという一連の作業が行えます。

サイトクローリング

VBAは、同じMS OfficeのInternet ExplorerやMicrosoft Edgeでも使うことができます。Internet ExplorerやMicrosoft EdgeでWebサイトにアクセスし、データをダウンロードすることで、サイトのクローリングができます。ダウンロードしたデータを、VBAで分析することも可能です。


○Internet Explorer(IE)の操作
○Webスクレイピング

MS Officeアプリケーション同士の連携

MS OfficeのVBAを使用できるアプリケーション同士を連携させてデータをやり取りし、処理することができます。

例えば、アクセスからデータを読み込みエクセルのグラフを作成する、エクセルのセルデータをワード文書に挿入してワードからシートを操作する、エクセル上でパワーポイントのスライドショーを再生するといったことが可能です。


○アクセスとのデータのやり取り
○データベースメンテナンス
○商品台帳作成
○請求書作成

VBAとマクロの違い

VBAとマクロは同じものだと誤解されることもありますが、両者は異なります。正しく理解するため、2つの違いをご紹介します。

マクロとは 

マクロとは、本来「コンピュータの処理を自動化する技術」の総称で、Microsoft社の用語ではありません。しかし、現在ではMS Office上で処理を自動化するための機能の名称として知られています。

MS Officeでは、リボンに表示された開発タブ(デフォルトでは表示されません)に「マクロ」とあり、その中にマクロ機能やVBAのコマンドがまとめられています。それが、マクロとVBAが混同されがちな理由です。

VBAとマクロの使い分け

VBAは、マクロを作成するためのプログラミング言語です。ユーザーがExcelでマクロを作成すると、Excelの内部でプログラミング言語であるVBAに変換されて保存されます。つまり、VBAはマクロを作成するためのプログラミング言語の一種です。

しかし、VBAとマクロはまったく同じものではありません。マクロはあくまでも手順を記録し、実行するための機能です。

VBAは、マクロを保存してアプリケーションに正確に伝えるためのプログラミング言語です。

マクロで行う処理はVBAで保存されていますが、マクロは処理を記録・編集するだけでなく、それを実行したり、セキュリティチェックを行ったりする機能も含まれています。

エクセルVBAをプログラミングする手順の一つで、エクセルのマクロ機能を使って自動化させたい作業を記録させるというものがあります。

そして記録させたソースコードをVBAエディタで、実用的なプログラムに修正していきます。私もこの流れでプログラムを作ることがあります。

そんな便利なマクロ機能なんですが、エクセルVBAはこのマクロ機能を使って、エクセル内の作業を自動化するだけのものと思っている方が多いんですね。

あ~もったいない、それだけではないんです。エクセルVBAを使えば、エクセルからメールが送れたりデータベースにアクセスしてデータを取得したり、Webページにアクセスして必要な情報を取得するWebスクレイピングまでできちゃいます。

日常業務において出来ないことはないんじゃないかってくらい、色々なことが出来ます。

■違い1:条件に応じて行う処理はできない

条件に応じて、異なる処理を使い分けて実行する場合、マクロの記録では対応できない。

■違い2:同じことを繰り返す処理は実行が面倒

ある同じ操作を何度も繰り返し行いたい場合、マクロの記録機能で行うと、1回ずつ回数分実行することになります

以上から、「マクロの記録」ではできない処理が、VBAなら可能になる場合があると言えます。

VBとVBAの学習サイト

超初心者のためのVB(ver.6)講座


http://www.ne.jp/asahi/ja/asd/vb_kouza/

初心者向けに丁寧な説明がいいですね。
ちょっと古いVB6での説明となっています。

連載:簡単! Visual Studio 2017入門(@IT)


 http://www.atmarkit.co.jp/ait/articles/1704/10/news026.html

 プログラムはどうやって作るの? 開発ツールはどうやって使うの? ゼロから始める新人プログラマーのための定番連載をVisual Studio 2017に合わせて改訂。

Excel VBA入門 – OfficePro


https://www.officepro.jp/excelvba/

VBAを使ってプログラムを作成することできるように順を追って解説をしています。一つ一つの項目ごとにサンプルが用意してありますので実際に実行しながら試してみて下さい。

Excel VBA 入門講座


http://excelvba.pc-users.net/

全部で10章の入門講座に分かれており、セルの操作、プログラム制御文、メソッド、デバッグなどVBAの基礎から応用を体系的に学ぶことができます。章末にあるサンプルコード付きの関数リファレンスが便利です。



まとめ

職場のWindows環境下で、稼働させる業務用のシステムで活躍しているVBと、同じく業務や作業の効率化で活躍しているVBAについて、歴史的な事から、活躍場面、将来性と学習サイトを紹介しました。

VBは長年愛されてきましたが、既に一時代を終えた感じです。
VBAの方は日本でのMS Office人気もあって、まだ使われ続けるのかなあと思います。(一部「脱Excel」というワードもありますが)

どちらも日本語の情報はたくさんありますので(本、スクール、セミナー、Webサイト、オンライン動画)グーグル先生に具体的に「こういうことをしたいのだけれど、どうする?」と聞いてみてください。きっとよい使用例を教えてくれるでしょう。

記事に記載したようにエクセル VBAの活用事例のようなことが全てできたら、社内でヒーローになれますね。ぜひ、皆さんも試してみてはいかがですか?

シェアする

  • このエントリーをはてなブックマークに追加