Excelのマクロ実行を外部操作で行いたいときはないでしょうか。
そんな時に便利なのはVBScriptを使う方法です。
数行のコードで実現できるのでとてもカンタンなんです。
今回は
についてまとめます!
もくじ
実行対象のマクロつきExcelブックを用意する
実行対象のマクロつきExcelブックを用意します。
マクロつきExcelブックであればなんでも結構ですが、
今回のサンプルマクロは実行するとA列の値をキーとし
wikiサイトからローマ字を取得しB列へ反映する内容となります。
マクロ実行後B列に値が入りますのでB列は空欄の状態です。
これをVBScriptで呼び出し、マクロが実行されB列に値が入るというイメージです。
指定Excelブックを開きマクロを実行するスクリプトを準備する
指定Excelブックを開きマクロを実行するスクリプトは以下の通りです。
以下の箇所を実行環境に合わせて変更します。
マクロつきExcelブックのパス
objExcel.Workbooks.Open(“C:\Users\extan\Documents\excel\wiki抽出.xlsm“)
マクロつきExcelブックのシート名 ※シートが一つの場合はコード自体不要です。
objExcel.worksheets(“Sheet1“).select
実行するマクロ名
objExcel.Application.Run “wiki検索と抽出”
※マクロ実行のウイザードで表示されるのマクロ名を指定します。
Dim objExcel
' Excelのオブジェクトを作成する
Set objExcel = CreateObject("Excel.Application")
'Excelを見える形で表示させる。
objExcel.Application.Visible = true
' Excelブック①のパスとシート名を選択
objExcel.Workbooks.Open("C:\Users\extan\Documents\excel\wiki抽出.xlsm")
objExcel.worksheets("Sheet1").select
'実行するマクロ名を指定。
objExcel.Application.Run "wiki検索と抽出"
Set objExcel = Nothing
VBScriptファイルを作成する
スクリプト実装にあたり、VBScriptファイルを作成しましょう。
VBScriptファイルは任意のディレクトリにおいて、Wクリックで実行するようにします。
①任意の場所に新規テキストファイルを作成します。
②テキストファイルに上記スクリプトをコピペします。
③適当なファイル名を入力し、拡張子を「.txt」から「.vbs」へ変更します。
警告メッセージがでましたら「はい」を押してください。
指定Excelブックを開きマクロを実行するスクリプトを実行する
VBScriptを実行するには作成したファイルをWクリックします。
はい!
ブックが起動と同時にマクロが実行されB列に値が挿入されましたね。
指定Excelブックを開きマクロを実行するスクリプトの解説
Excelのオブジェクトを作成します。
<strong>Set objExcel = CreateObject("Excel.Application")</strong>
VisibleプロパティにTrueを設定することで、Excelが目に見える形で表示されます。
Falseを指定するとExcelは表示されませんがバックグラウンドでは実行されます。
<strong>objExcel.Application.Visible = true</strong>
マクロつきExcelのパスを指定します。
<strong>objExcel.Workbooks.Open("<em>C:\Users\extan\Documents\excel\wiki抽出.xlsm</em>")</strong>
Excel起動後に開きたいシート名を指定します。1シートの場合はコード自体不要です。
<strong>objExcel.worksheets("<em>Sheet1</em>").select</strong>
実行するマクロ名を指定します。
<strong>objExcel.Application.Run "<em>wiki検索と抽出</em>"</strong>
さいごに
いかがでしょうか。
今回は
についてまとめました。
VBSを使うとExcelのマクロを指定し詳細な操作ができることがわかったかと思います。
応用をすればタイムスケジュールを使用してマクロを定期実行することも可能ですので、利用用途が広がりますね。
今後もいろいろな使い方をご紹介していきたいと思います。
タスクスケジューラでVBSを実行してVBAを動かしているのですが、両方とも前任者が作成してるのですが、途中でエラーで止まって、後でファイルを開こうとすると使用者は前任者です。と出て読み取り専用でしか開けなくなります。前任者は退職されていてログインはしてないのですが、なぜ前任者でエクセルが実行されているのか不思議です。前任者が作成したVBSだから前任者で実行されるのでしょうか?
いつもご利用ありがとうございます。
ご質問のファイルを開くと前任者が開いている状態(読み取り専用)になる件ですが、
おそらくタスクスケジューラのタスク実行ユーザが前任者指定のままになっていて、対象ファイルを開く処理をしている可能性がありますので、
タスク実行ユーザを確認頂けますでしょうか。
タスクスケジューラを開き、タスクスケジューラライブラリ>該当タスク>右クリックプロパティ>セキュリティーオプション
から確認ができます。
もう一つ考えられることは前任者が接続が切れるなどして共有ファイルのエクセルを開きっぱなしにして終了している状態です。
この場合には共有ファイル側のエクセルに前任者の操作状態が残ってしまっているので、共有ファイルの環境を再起動するなどして
セッションを解除する必要があります。