109
128

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vbacを使ってExcel VBAのソースコードを保守しやすくしよう

Last updated at Posted at 2014-12-03

Excel Advent Calendar 2014の12/3分の記事です。

インポートとエクスポート

ExcelにはVBA用のIDEが付属しています。

そこそこ良くできているとは思いますが、VBAプロジェクトの規模が大きくなってくるといろいろ大変です。特に、ソースコードのバージョン管理(変更履歴管理)をしたいと思ったときに困ります。

.xlsmファイル (.xlsxファイルのマクロが有効なやつ) 自体はzipアーカイブなのでdiffはとれませんし、zipアーカイブを展開してみても、VBAプロジェクトはバイナリとして含まれていますからやっぱりdiffはとれません。

そんなときのために、Excel VBAにはファイルのエクスポート/インポート機能があります。IDEの「ファイル」メニューを選択するか、またはプロジェクトペインのソースコードを右クリックすると、「ファイルのインポート」「ファイルのエクスポート」というコマンドが表示されます。

vba.png

えー、これ手でやるのめんどくさい。

vbac

そんな時は、Ariawase というVBAライブラリに同梱されている、vbac というツールを使いましょう。

vbacについては、作者の いげ太 さんが解説エントリーを公開していますので、それを読んでいただくのが一番いいかと思います。

いげ太の日記: Ariawase v0.6.0 解説(vbac 編)

vbac は、フリーの VBA ライブラリ Ariawase に同梱されるツールで、
各種のマクロ有効 Office ファイルから VBA コードをエクスポートしたり、
あるいは逆にインポートしたりするためのものです。
VBA のソースコードを git などでバージョン管理するために、
また Emacs や Vim や Sublime Text あるいはサクラエディタなどの任意のエディタで VBA を編集するために、
さらに grep や diff のような外部コマンドとの連携を図るために使用できます。

vbac.wsf ファイルが置かれたフォルダに bin フォルダを作り、その中に .xlsm ファイルを置いておきます。そして、そこで vbac.wsfdecombine オプション付きで実行します。

C:\Anywhere\You\Like> cscript vbac.wsf decombine
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

begin decombine

> Target: sample1.xlsm
- Export: UserForm1.frm
- Export: UserForm1.frx
- Export: Module1.bas

end

C:\Anywhere\You\Like> dir src\sample1.xlsm
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は XXXX-XXXX です

 C:\Anywhere\You\Like\src\sample1.xlsm のディレクトリ

2014/12/03  10:37    <DIR>          .
2014/12/03  10:37    <DIR>          ..
2014/12/03  10:37                80 Module1.bas
2014/12/03  10:37               822 UserForm1.frm
2014/12/03  10:37             2,584 UserForm1.frx
               3 個のファイル               3,486 バイト
               2 個のディレクトリ  59,860,484,096 バイトの空き領域

簡単ですね。

ちなみに、出力されるソースコードの文字コードは当然のようにShift JISです。

vbacGUI

vbac単体でも何の問題もありませんが、GUIが欲しいという場合は、vbacGUI というGUIフロントエンドを使いましょう。

作者の D*isuke YAMAKAWA さんが解説エントリーを公開しています。

vbac のGUIフロントエンドを作りました - ClockAhead 開発Blog

UIの見た目はこんな感じです。

vbacgui.png

vbacGUIは、vbac以外に、the Platinum Searcher という高速検索ツールを同梱しています。

109
128
2

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
109
128

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?