Visual Basic Application(VBA) のマクロプログラムは駆使すれば、ほとんどの難題が一挙解決する勝れものです。 しかし、これに取り組むには相当なハードルの高さや煩雑さがネックになります。 他人が作ったものを利用できれば簡便ですが、他人のなかには悪意を持つものもいます。 事実、悪意の第三者にとって、VBA ほど簡単な手段は他にありません。言い換えれば VBA はそれほど難しくないのです。
悪意のないmacroなら、敬遠する手はないです。積極的に利用したいものです。 「悪意がある」との見定め方を末尾に、思いつく順に随時追加記入していきます。 悪意がなくても、プログラムが稚拙なため「無限ループ」に陥ったり、通常なら「削除」など実行前に発せられる メッセージが出なくなったりして不本意な結果になったりすることもあります。
マクロを含む Excel や Word の文書を有効にするには面倒な設定が必要です。設定をしなければ容易には実行できません。
そこで簡便に扱う方法を作成します。 Macroを使う場合は、Excel、Word とも共通で Alt + F11 で Visual Basic Editor ( VBE ) 画面に移り、「 挿入 」→ 「 標準モジュール 」 (①)で編集画面が表示されます。 このウインドウは全画面でなく縮小しておくと文書画面を見ながら操作できるのでわかりやすいです。信頼できると判断したプロシージャ(プログラム)の書式の貼り付けをします。(②)
自己責任でOKと思えば、貼り付けたプロシージャ内にカーソルを置いて「 Macroの実行 」をクリックします(③)。 ステップごとに実行するには F8 キーをその都度押します。文書場面から実行するには Alt + F8 です。
プログラムが [ Sub … 〜 End Sub ] まで記述されていたら問題ありませんが、プロシージャの内容だけの場合は、まず、sub とタイプし次に 適切な名前 ( 何でもよいが内容が分かるのがベター、仮に temp とします ) をタイプ入力して Enter を押すと自動的に [ Sub temp() … End Sub ] が作られるので、… の部分に貼り付けをします。複数のプロシージャを構成するモジュールなど Sub から始まっていない場合もあります。
関連ページ マクロ作成のヒント 数独の解法 タイ語等タイプ入力
下にイミディエイト欄がありますがここは、 プロシージャの記載内容を確かめるため一時的に Debug.Print で出力させる場所に使われます。実はここでは Print 3*5 ( または ?3*5 あるいは Debug.Print 3*5 … いずれも、3 × 5 の結果の出力要求 ) 等の簡単なベーシック*なデマンドを記載して結果を求めたり、次項のように簡易なマクロを実行する場所として利用出来ます。
*この ”ベーシック” という言葉は”根本的な” の意味で使用しています。 VBA の Basic とは本来 Beginner's All-purpose Symbolic Instruction Code のことで 1960年代に開発された プログラミング言語です。
「 イミディエイト 」 欄が表示されていない場合は、 「 挿入 」 の左の 「 表示 」 から 「 イミディエイト ウィンドウ 」 をクリックします。
Macro を簡単に試してみるためのヒントを示します。図の 「 イミディエイト 」 欄に記述をして 「 Enter 」 を押します。基本的にはプロシージャ形式であっても問題ありませんが分岐するような形態はできません。 エラーが出てもあまり驚く事はないです。
x=3: y=5: Msgbox x*y
上をコピーして 「 イミディエイト 」 欄に貼り付け、この記述上にカーソルを置いて 「 Enter 」 を押します。メッセージボックスに 「 15 」 と表示されます。
ActiveCell.Range("a1:c4").Select
上の場合アクティブセルの a1 〜 c4 セルレンジが選べます。… アクティブセルが b4 にある場合は b4 〜 d7 がハイライト表示されているはずです。
Word だと、文書の構成が分かります。次の例では第2段落目の1番目のセンテンスが選ばれます。
ActiveDocument.Paragraphs(2).Range.Sentences(1).Select
For i=1 To 9:For j=1 To 9:ActiveCell.Cells(i,j)=i*j:Next:Next