目次
概要
マクロと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の特徴
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とは/' には、下位層のページがありません。
リンク集
重複を恐れないリンク集。
- Office Visual Basic for Applications (VBA) リファレンス | Microsoft Docs
- Office VBA の基礎知識 | Microsoft Docs
- Office 2019 の VBA 向け新機能 | Microsoft Docs
- Office 2016 の VBA 向け新機能 | Microsoft Docs
- Microsoft Office VBA 日本語版リファレンス総目次 - Qiita
- Visual Basic for Applications - Wikipedia
- Visual Basic - Wikipedia
- Microsoft Office - Wikipedia
- マクロ (コンピュータ用語) - Wikipedia
- マクロ言語 - Wikipedia
- マクロとは - IT用語辞典 e-Words
- VBA(Excel VBA)とは - IT用語辞典 e-Words
- マクロとVBAの違い - Office TANAKA
- マクロとVBA - You.Activate
- いまさら聞けないIT用語:「マクロ」とは? VBAとの違い、できること、Excelマクロの初歩など基本を解説 | データのじかん
- マクロって何?VBAって何?|VBA入門
- VBAとは、マクロとは|VBA技術解説
- VBA基本(VBAって何?[=「マクロ」?])
- VBAの特徴について ~歴史、利用者層、サポートするパラダイムと型付けの作法など - t-hom’s diary
- 世界のプログラミング言語(4) 長年愛されてきた「Visual Basic」を改めて評価してみよう | マイナビニュース
- エンドユーザープログラミング時代の到来:ロングセラー|技術評論社
- ExcelにPythonが搭載?その後 - xlwings を使おう - Qiita
- Excel操作をJavaScriptで記録 ~Microsoft、“Office Scripts”をパブリックプレビュー - 窓の杜
- #01 Excel VBAとはなにか? | Excel VBA入門 - プログラミングならドットインストール
- [備忘録]C#出身の僕がExcel VBAで悩んだところ - Qiita
- VBAの特徴について ~歴史、利用者層、サポートするパラダイムと型付けの作法など - t-hom’s diary
- 【ワレコの講座】VBAをEXCEL2007,2010,2013,2016,2019の32/64 bit全対応させるには?【解決】
- vba — VBA 6.0とVBA 7.0の違いは何ですか?