私は会社の新人教育で後輩に「仕事で使うのは C# だけど、Visual Basic を覚えた方が良い」と言いました。その心は

「Visual Studio 2010 のマクロも、Office 2010 のマクロも Visual Basic だから」

です。

最近の Visual Studio ( 2002以降 ) で開発を始めた方は、昔の Visual Basic を知らないかもしれませんが、C# が登場する以前に C# と同じように簡単にプログラムを作れた主力プログラム言語が Visual Basic 6.0 でした。現在の VB は 10.0 ですが、その VB6 は、Office のマクロとして現在でも生き残っています。また最新の Visual Studio 2010 のマクロも、.net 3.5 の Visual Basic (9.0相当) で記述します。

なんだか日本では「C# の方が高機能だ」という誤解が蔓延していますが、基本的に VB と C# はほとんど同じ機能で、IDE (Visual Studio の画面操作)とコンパイラの設計思想が少し違うだけです。少し古い VB6 とも表記が似ているので、VBを知っていれば簡単なマクロは作れます。

(※逆にVBを知っていると、C#はあらゆるキーワードを {} に変えるだけなのでほとんど知識なしに書き換えが出来ます。簡単に両方使えるようになります。)

と、言っても仕事で使わないマクロを簡単に書けるようにはなりませんよね。私の後輩がこのブログを読んでいるかどうか?はわかりませんが、彼(と、彼と同じように後からプログラムを始める方)が立派にマクロを書けるようになって、仕事を効率よく進められるようになるために、これから少しマクロの話を書いていこうと思います。

[開発] タブを表示して、Visual Basic for Applications を起動

まず、マクロを使うには準備が必要です。Word, Excel, Outlook など、Office 系でマクロをサポートしているソフトの場合は全て同じ方法でマクロを作れるようになります。ここでは Outlook 2010 の例を書きます。

 20110814 172438-2
まず、Office 2010 のリボンの [ファイル] メニューから(Office 2007 の場合は左上の丸いアイコンから)[オプション] を選んで選択します。

ヘルプ図_20110814 173115_20110814-173200

[リボンのユーザー設定] の画面を開き、右側のリストから [開発] にチェックをつけます。(※Office 2007 の場合は[基本設定] に [開発タブをリボンに表示する] というチェックボタンがあります)

[OK]を押してオプション画面を閉じると、リボンに [開発] タブが追加されます。

20110814 173332-2

この [Visual Basic]ボタンを押すと、Microsoft Visual Basic for Applications の画面が起動します。ここで開く画面でマクロを記述します。

 ヘルプ図_20110814 175937_20110814-180722
Visual Basic for Applications の画面は、Visual Basic 6.0 の画面とほとんど同じなので、その後継の Visual Studio 2010 ともかなり似た画面構成になっています。

ソリューションエクスプローラと同じようにプロジェクトの項目のファイルの一覧が表示され、アイテムをダブルクリックするとコードエディタが開きます。フォーム(ウィンドウ)をデザイナで編集するときなどは、プロパティウィンドウで値を編集することが出来ます。

若干の使い勝手は違いますが(時代の流れを感じるかもしれませんが)、おおむね同じように使えます。

 

改ざん防止用の証明書を作成

マクロは強力な機能です。マクロはユーザーの操作の代わりにプログラムで処理を自動化します。つまりあなたが操作しなくても、Outlook のメールを別のフォルダに移動したり、出来てしまうのです。うまく使えば仕事の効率が飛躍的に向上しますが、悪意のあるプログラムコードに乗っ取られてしまうと、個人情報が流出したりファイルを破壊されたり危険な状況になってしまいます。

そんな危険な状態を防ぐため、Office にはマクロが勝手に誰かに書き換えられていないか?確認する機能があります

これからマクロを書くあなた専用の証明書を作りましょう。

image

まず、スタートニューから [Microsoft Office] > [Microsoft Office 2010 ツール] > [VBA プロジェクトのデジタル証明書] を起動します。

20110814 181744デジタル証明書の作成画面が表示されたら、好きな名前(自分のユーザー名など)を入力して [OK] ボタンを押します。

20110814 182009

「(入力した名前)に対する新しい証明書が作成できました。」と表示されます。

作成した証明書はコンピュータの中に保存されます。この証明書は自分専用で他の人に自分が作った事を証明するためには使えないので注意してください。(公開する証明書は自分では作れず、専用の機関にお金を払って作成してもらう必要があります)

 

作成した証明書をマクロプロジェクトに適用

Microsoft Visual Basic for Applications の画面に戻って、プロジェクト(ソリューションエクスプローラと同様のウィンドウ)のツリーから、証明書を適用するプロジェクトを選択します。

メニューの [ツール] > [デジタル署名] を押すと次の画面が表示されます。まだプロジェクトに証明書が署名されていないので、「証明書がありません」と表示されるはずです。

20110814 181626

ここで [選択] ボタンを押すと、さっき作った証明書を選択する画面が表示されます。

20110814 182114

自分の証明書だと確認して、[OK]ボタンを押したら、プロジェクトに証明署名で署名されたことが表示されます。ウィンドウを閉じたらプロジェクトを保存します。

証明書はプロジェクトに署名されたことが保存されるので、必ず忘れずに、保存ボタンを押すか Ctrl + S キーを押してプロジェクトを保存してください。

 

オプションを変更することをお奨めします

マクロ(Visual Basic for Applications: VBA) のエディタは、ずいぶん古い Visual Basic のものを使用しています。そのため、オプションを変更した方がいい点がいくつかあります(そのいくつかは、VB6が現役の時から変更した方が良かったものです)。

ヘルプ図_20110814 183358_20110814-183600

まず、「変数の宣言を強制する」をチェックしてください。これをチェックしないと(デフォルト)、まるで JavaScript のように変数を宣言しなくてもプログラムがエラーになりません。この機能、最新の Visual Basic にもありますが、既定値が Visual Basic 7 で変更されて強制するのが既定になりました。(6の頃からチェックするのが推奨されていました)

なので、最新版と同じように変数の宣言を強制するようにしましょう。

ヘルプ図_20110814 184236_20110814-184721

次は、コードエディタの画面を変更します。フォントをメイリオをに変更するとコードが読みやすくなります。

ヘルプ図_20110814 184427_20110814-184557

また、識別子の色を黒から他の色(お奨めは青)に変更しましょう。コード中の「文字列」の色は変更できないので、識別子の色を変更すると文字列との区別が付いてコードが読みやすくなります。

オプションを [OK] ボタンで閉じたら、表示されていないツールバーを表示しましょう。Visual Studio 2010 にある、コードをコメントアウトしたり、コメントアウトを解除するボタンもちゃんとあります。

また、プロジェクトとプロパティのウィンドウを、Visual Basic 2010 と同様に右に移動すると、使い慣れた操作感で作業が出来るでしょう。

20110814 185302

カスタマイズした画面は、こんな感じです。

さぁ、準備が出来ました!次回はいよいよ、実際に Outlook マクロを作りましょう。

追記)ごめんなさい。Outlook2010 から Visual Basic for Applications を起動した場合は、ツールバーやプロジェクト、プロパティの配置を覚えることが出来ない場合があるようです。Excel 2010 から起動した場合は、配置が記憶され、Outlook から起動しても同じレイアウトで表示されるようです。

追記)Office から Visual Basic for Applications を起動した後、VBA の画面を閉じて、Windows 7 がスリープやロックに入ると、再ログインした後の画面で、なぜか、ツールバーの無いVBAの画面が表示されるようです。呼び出した元の Offife を再起動すると出なくなるようです。Outlook など起動したまま使うアプリでマクロを使う場合は、面倒ですが、一度 Outlook も一緒に再起動すると良いかもしれません。