スポンサーリンク

VBS を使ってマクロ(Excel VBA)を実行する方法


VBS(Microsoft Visual Basic Scripting Edition)を使えば、ファイルのアイコンをダブルクリックするだけで指定した処理を自動で実行することができます。

ファイルのアイコンというのはこういうやつ↓のことですね。

image

このファイルは拡張子が「.vbs」という形式になっており、中を開くと VBS で記述されたプログラミングコードが入っているのです。

この VBS を上手に使えば、ファイルアイコンのダブルクリックだけで決まりきった処理を行わせることができるので、大幅な時間短縮に繋げれるケースもあります。

また「VBS でExcel を開いてマクロ(Excel VBA)を実行する」といった処理を行うこともできるので、VBS と Excel VBA を組み合わせて色々と応用を効かせることもできるでしょう。

今日は、上記の「VBS でExcel を開いてマクロ(Excel VBA)を実行する」方法を紹介します。

スポンサーリンク

1、VBS ファイルの作り方

VBS ファイルの作り方

まず VBS ファイルの作り方を説明します。

普通に「メモ帳」を実行しましょう。

image

実行するとこのような↓白紙のファイルが開くので、ここにコードを書き込むことになります。

image

必要なコードをこんな感じ↓で書き込んで保存します(コードの中身は後に説明)。

メモ帳を保存したファイルの拡張子は「.txt」です。

この拡張子を「.vbs」に変更しましょう。

image

これで、VBSファイルができあがります。

VBS ファイルを実行する方法

さて、このようにして作成した VBS ファイルを実行する方法は、ファイルのアイコン↓をダブルクリックするだけです。

image

VBS ファイルの編集

VBS ファイルを編集するためには「ファイルのアイコンを右クリックして編集を選択」します。

こうすれば普通にファイルが開けるので編集できます。

VBS ファイルをダブルクリックすると実行してしまうので気を付けましょう!

2、Excel ファイルを開いてマクロ(Excel VBA)を実行するVBSコード

VBS ファイルをダブルクリックすると VBSが実行します。

Excel ファイルを開いてマクロ(Excel VBA)を実行するVBSコードを紹介します。

実行するExcel VBA

VBS により呼び出される Excel VBA コードについて説明します。

単純にメッセージボックスだけを表示する以下のコードを Excel ファイル(テストVBA.xlsm)の VBE(エディタ)の標準モジュールに書いておきます。

このExcel ファイル(テストVBA.xlsm)を VBS ファイルと同じフォルダの中に保存しておきます。

VBS コード

以下のVBS コードをメモ帳に記述して普通に保存した後、拡張子を「.txt」から「.vbs」に変更します。

3、VBS コード説明

VBS コードの説明

WScript オブジェクトの CreateObject メソッドを使って、Excel のオブジェクトを作成しています。作成した Excel オブジェクトは変数 Obj の中に格納しています。

この VBS ファイルが存在するフォルダのパスを取得して変数 Path に格納しています。

Obj.Visible = True とすることで、Obj(Excel オブジェクト)が目に見えるようにしています。

CreateObject(“WScript.Shell”).AppActivate Obj.Caption とすることで、Obj(Excel オブジェクト)を最前面に持ってきています。

WshShellオブジェクトの AppActivate メソッドを使っています。このメソッドを使うと指定されたアプリケーションにフォーカスが移ります(指定されたアプリケーションが最前面に来る)。

Obj.Workbooks.Open Path & “\テストVBA.xlsm” によって、Obj(Excel オブジェクト)内にこのVBSファイルと同じフォルダに存在する「テストVBA.xlsm」というファイルを開きます。

Obj.Application.Run “TestVBA” とすることで、この Excel ファイルの「TestVBA」というマクロを実行しています。「TestVBA」については先に示した TestVBA プロシージャを確認して下さい。

実行結果

さて、上記の VBS を実行してみましょう。VBS ファイルの

image

4、まとめ

VBS については私もこれから色々と勉強していきたいと思います。

Excel VBA と組み合わせて使うことで、様々に応用できる可能性があると考えます。