IT系/VBA/基本/VBAとは

Last-modified: 2021-08-14 (土) 23:40:14

目次


概要

マクロとVBAの概念、VBAの概要について説明。

マクロとVBA

マクロとは、関連する複数の操作や手順、命令などを一つにまとめ、必要に応じて呼び出すことができるようにする機能のこと。
マクロはExcelの機能の一つ*1
Excelを自動で操作する機能であり、マクロ言語で記述された命令に従い、Excelの自動操作を行う。
Excelのマクロ言語として採用されているプログラミング言語が「VBA(Visual Basic For Applications)」。

 

VBAは、Excel5.0で採用されたマクロ言語であり、Excel4.0では別の専用マクロ言語が使用されていた*2
VBAは、Excelだけでなく、Access、Word、Powerpoint、Outlook等のMicrosoft Office製品でもマクロ言語として用いられている。

 

まとめると以下の通り。

マクロ
Excelがもつ機能の名称
VBA
マクロを記述するプログラミング言語の名称
 

実際のところ、マクロを作成するときはVBAを使うことになるので、両者は同じ意味として使われているのが実情である。

VBAとは

VBA(Visual Basic for Applications)は、VB(Visual Basic)の言語仕様をベースにして、ExcelやWordなどのアプリケーションで使用するマクロ言語としてカスタマイズしたものである。

  • 最後のApplicationsが複数形になっているのは、ExcelだけではなくMicrosoftのOffice製品全般に共通で搭載されているマクロ機能でVBAが使われているため
  • アメリカのダートマス大学で作られたBASICという教育用言語を元に、MicrosoftがこのBASICを元にQuick Basicという言語を作り、それからVisual Basicを作った。
    Visual Basicをもとに作られたマクロ言語がVBA(Visual Basic for Applications)ということになる。
  • 本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている
  • マイクロソフト社からライセンスを取得し独自に開発したアプリケーションにVBAを搭載することも可能だった*3

VBAの特徴

  • 手続き型言語
  • イベント駆動型言語
  • オブジェクト指向を一部サポート*4
  • 使用を始めるにあたり、Office以外の特別なソフトウェアの用意やセッティングを必要としない
  • プログラムの実行が容易*5

VBAの歴史

  • 1993年 (日本では1994年) に MS Excel 5.0 に搭載
  • 1996年 VBA 4.0リリース。C++で開発され、以前のものと比較して完全にアップグレード。オブジェクト指向を一部サポート
  • 1997年 VBA 5.0リリース。MS Office 97 に搭載。VBAの開発のための支援ツール - Visual Basic Editorが搭載され,また,ActiveXコントロールにも対応。イベント駆動型言語となる
  • 1999年 VBA 6.0 および VBA 6.1リリース。Office 2000 の COM アドインをサポート
  • 2000年 VBA 6.2リリース。Office 2000 SR-1 に搭載
  • 2001年 VBA 6.3リリース。Office XP に搭載
  • 2003年 VBA 6.4リリース。Office 2003 に搭載
  • 2006年 VBA 6.5リリース。Office 2007 に搭載
  • 2007年 7月1日以降、マイクロソフトは新規顧客への VBA 再配布ライセンス提供を停止
  • 2010年 VBA 7.0リリース。Office 2010 に搭載。Office 2010は64ビット版が初めて登場し、VBA 7も64 ビットをサポート。VBA 7 には、64 ビットサポート以外に、VBA 6.5 と比べて開発者向けの新機能はなし
  • 2013年 VBA 7.1リリース。Office 2013 に搭載。Office 2016、および Office 2019 にも VBA 7.1 が搭載されている
  • 2017年 Excel に Python を搭載するとことをマイクロソフトが検討(実現せず。Office 2019未実装)
  • 2020年 マイクロソフト、Excel操作をJavaScriptで記録する「Office Scripts」をパブリックプレビュー(Office 365で使用可能となる)

他言語(Java、C#)出身者から見たVBAの特徴

  • コメントが '
  • 変数の定義は強制されない(Option Explicitなし)
  • 変数定義時に値を代入できない
  • return がない
  • 返り値のないメソッドでは () を使わない
  • インクリメントに++が使えない
  • 同じ型の変数を同時に定義できない
  • 値型と参照型では代入の仕方が異なる(参照型は Set が必要)
  • For i = 1 To 1 でも式の中に入ってしまう
  • ループ文にContinueがない
  • ForやIf内でスコープがない
  • 配列のIndexが1から始まる場合と0から始まる場合がある(Option Base 1を指定すると1始まりになる)

マクロを使う準備

以下の手順で「開発」タブを表示する。

「ファイル」タブ→「オプション」→「リボンのユーザ設定」で、「開発」タブにチェック

TIPS

別ページの一覧を入れる。

'IT系/VBA/基本/VBAとは/' には、下位層のページがありません。

リンク集

重複を恐れないリンク集。

その他メモ



*1 マクロ (英: macro) は「大きい」「巨大な」といったような意味の語であるが、コンピュータ関係では、アプリケーションソフトウェアなどの操作などといった、プログラミング言語と比較して粒度が大きい操作をまとめて自動化したりする機能を指して良く使われる。(Wikipediaより
*2 Excel2019でも使用可能の模様。Excelのシートを右クリックし、挿入を選択すると選択肢にExcel4.0マクロが表示される
*3 2007年7月1日以降、マイクロソフトは新規顧客へのVBA再配布ライセンス提供を停止している
*4 継承をサポートしていないため「オブジェクト指向言語」には分類されない
*5 疑似コード (Pコード) ベースのコンパイラ型およびインタプリタ型両方の性質を持っており、ユーザーが記述したソースコードを1アクションで自動的に疑似コードにコンパイルして直接コンピュータに実行させることができる