VBSを使ってマクロ(VBA)をダブルクリックで実行

スポンサーリンク

マクロを実行するのが面倒な場合がある

ショートカットやボタンで実行できるように設定していたとしても、毎回ファイルを開いてマクロを実行するのが面倒に感じることがあります。

一日に何回も実行する必要がある場合、特に面倒に感じるのですが、イベントプロシージャのようにファイルを開くたびに毎回勝手に実行されるのも困るし…と悩んでいたところVBS(VBScript)を使う便利な方法がありましたのでご紹介します。

この方法を使えば作成したVBSファイルをダブルクリックするだけでマクロを実行できるようになります。

またこの方法を少し応用すれば「1日1回朝8時」や、「平日1時間おきに実行」などパソコンに登録したタイミングで自動実行することができるようになります。
まず今回はダブルクリックでファイルを開いて実行する処理ができるVBSファイルの作成方法についてご紹介します。

マクロ(VBA)をボタン一つで実行する方法について

VBAを実行するためにVBSファイルというものを作成します。
VBSファイルはマクロ(VBA)を実行するためのコードを記入したもので、テキストで簡単に作成できます。

VBSの基本的な文法はVBAとほぼ同じですし、マクロ(VBA)を実行するためのコードはすごく簡単なので、少しVBAを触っている人なら手間取らずに作成できると思います。

コードを書いた後のテキストファイルは保存後に拡張子を「.txt」から「.vbs」に変更することで、VBSファイルとしてパソコンからプログラムを実行することができるようになります。

vba154_拡張子変更

拡張子が表示されていない方はどこかのフォルダを開いた際の表示タブの中にある「表示/非表示」項目の中の「ファイル名拡張子」にチェックを入れましょう。

vba154_ファイル名拡張子

スポンサーリンク

Excelのマクロ(VBA)を実行するサンプルコード

Excelのマクロ(VBA)を実行するサンプルコードは下記の通りです。
下記はデスクトップにある「Excelフォルダ」の中の「ファイル1.xlsm」ファイルの「マクロ1」というプロシージャ名のマクロを実行します。

Dim ExApp
Set ExApp = CreateObject(“Excel.Application”)

’ファイル開く
ExApp.visible = true
ExApp.Workbooks.Open “C:\Users\ユーザー名\Desktop\Excelフォルダ\ファイル1.xlsm”
WScript.Sleep 5000

’マクロ実行
ExApp.Application.Run “マクロ1”
WScript.Sleep 5000

’ファイル閉じる
ExApp.Quit
set ExApp = Nothing

VBSファイルはプロシージャ名などを書いたり、Sub~End Subなどの記述は必要なく、書いたものを即座に実行してくれます。

ExcelVBAからほかのOfficeソフト(AccessとかOutlookなど)を呼び出すときと同じく、まずはExcelを呼び出す設定をします。
Excelをオブジェクト型の変数に格納したあと、対象のファイル名とマクロ名(プロシージャ名)を指定することで実行できるようになります。

ファイルを開いたり、マクロを実行したりする間には少し余裕を持って待機時間を設定しています。
最後に対象のファイルを閉じるように設定しておくとダブルクリックするだけで処理が完結します。

マクロを実行したExcelファイルそのものを使用したり確認したりする場合、最後の閉じる操作は不要ですので削除してください。
(VBAと同じくアポストロフィ「’」でコメントアウトも可能です。)

WSHを用いてデスクトップなどの特殊フォルダを取得したり、FSOでVBSの格納フォルダを指定してから相対パスなどを使って対象ファイルを指定することも可能ですが、別記事でお伝えする定期実行などをする際にうまく働かないことがあるようです。

ですので個人的にはフルパスで対象ファイルを指定することがおすすめです。

Accessのマクロ(VBA)を実行するサンプルコード

基本的にAccessについてもExcelとほぼ同じコードになります。
下記はデスクトップにある「Accessフォルダ」の中の「データベース.accdb」ファイルの「マクロ1」というプロシージャ名のマクロを実行します。

Dim AcApp
Set AcApp = CreateObject(“Access.Application”)

’ファイル開く
AcApp.visible = true
AcApp.OpenCurrentDatabase “C:\Users\ユーザー名\Desktop\Accessフォルダ\データベース.accdb”
WScript.Sleep 5000

’マクロ実行
AcApp.Application.Run “マクロ1”
WScript.Sleep 5000

’ファイル閉じる
AcApp.Quit

set AcApp = Nothing

これらは手作業でマクロを何度も実行する際に役立ちます。
より自動化の幅を増やせるようにするため、次はマクロの定期実行の方法をご紹介します。

コメント