0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelマクロを動かすVBAは”ThisWorkBook”に書けば良いの?

Posted at

概要

レガシーなのか、あるいはJTCではまだまだ主力なのか。Excelマクロを動かすVBA(Visual Basic for Applications)のプロジェクト構成とモジュールごとの役割について整理しました。

結論としては、"ThisWorkBook"に書いても動きます。ただし、きちんと役割ごとにモジュールを分けることが推奨されます。 です。ThisWorkBookは文字の通りそのBook(Excelファイル)に閉じた場所となっています。
※この記事では、VBAの実行手順やコードについてはほとんど触れていません

経緯

最近ちょっとしたcsv変換の依頼があり、VBAで書きながらふと「VBAにおける実行ファイルの置き場や記述場所って決まりがあったかな?」と思いましたので調べてみました。初学時には、いきなりボタンとThisWorkBookにVBAを書き、ぽちぽちとトライ・エラーしていたと思います。ただ、コードがどこに記述され、どのように保存・実行されるのか、Excelファイルを中心に全体像を理解することで、VBAを効果的に利用することができるのではないかと思います。

マクロとVBA

今更ですが、マクロとVBAの違いを整理すると以下の通りです。

  • マクロ: いくつかの動作をまとめて呼び出し実行する機能のこと(Excelに限定されない)
  • VBA: MicrosoftのOffice製品(ppt, word, access, excelなど)に組み込まれたプログラミング言語、VBE(Visual Basic Editer)というEditerを用いて記述する

この定義に従うと、Excelマクロとは「Excelを中心としたいくつかの動作をまとめて実行する機能(あるいはその機能をもつファイル)」を表します。そしてその実行方法を実現する手段の一つがVBAによるプログラミング、と言えます。

マクロ VBA (Visual Basic for Applications)
定義 一連の操作を記録・実行する機能 Microsoft Office製品に組み込まれたプログラミング言語
役割 定型的な作業の自動化 Office製品の機能拡張、自動化、カスタマイズ
コードの記述方法 記録マクロ、VBAコードを直接記述 VBAコードを直接記述
柔軟性 比較的低い(記録された操作の範囲内) 高い(複雑な処理や高度なカスタマイズが可能)

ExcelにおけるVBE(Visual Basic Editer)のプロジェクト構成と役割

Excelファイルで開発タブ > VBEを開くと左側に"プロジェクト"というサイドバーが見えます。この中身は現時点でのアクティブなExcelファイルの情報が記載されています。


スクリーンショット 2025-03-15 15.40.56.png

項目名 概要
VBAProject(XXXXX) 開いているExcelファイル(あるいはExcelファイルのアドイン)ごとに階層化するもの
Microsoft Excel オブジェクト ThisWorkBookモジュール, Sheetモジュール、などオブジェクトをまとめたフォルダ
ThisWorkBookモジュール WorkBook (Excelファイル)全体 に関連するイベント (ブックのオープン、クローズ、保存など) に応答する処理を記述
Sheetモジュール 特定のWorkSheetに関連するイベント (シートの選択、セルの変更など) に応答する処理を記述
(標準)モジュール 特定のBookやSheetに依存しない汎用的な共通処理を記述
クラスモジュール (必要に応じた)独自のオブジェクト (クラス) を定義する場所
ユーザーフォーム ユーザーからの入力を受け付け、ダイアログ・ポップ表示の処理を記述

結局どこに書けば良いのか?

極端な話、すべて ThisWorkbookモジュール に記述しても、一応は動作させることができます。なので、そこまで長いコードでなく再利用や他のブックからの呼び出しがなければそれで問題ないと思います。しかし、可読性や再利用なども視野に入れると推奨はされません。

以上です

大規模なコードをVBAで書くことは今後あるのか・・・

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?