まいど!福地です。
今回の記事はまたしてもコマンドラインに関してです(*´ω`)
マクロが組まれたExcelファイルを触るとき、みなさんはどうされてますか?
ちなみに僕は「DA触らなあかんやん💦」とゾっとしてしまいます笑
でもできるならDSでやりたいですよね!
ということで、今回は
DSでマクロ実行
してみました(^^)/
ナレッジにも紹介されてますが、ナレッジとは少し違うやり方になりますので、もしよければ開発等の参考にしていただければと思います(∩´∀`)∩
VBScriptの準備
ナレッジにも書いてありますが、DSでマクロを実行するにはこのVBScriptが必要になるんですね。
「VBScript」てなんぞや?ってことなんですけど簡単に説明すると「Windows上で動くプログラミング言語」です。VBSとかVBスクリプトと書いたりもしますね。
ポイントとしては、 特別なアプリケーションをインストールしなくてもメモ帳だけでプログラムができます。
ここまで聞くと「プログラミングせなあかんのか💦」と構えちゃいますよね(;^ω^)
でもご安心ください!
今回使っているコードをそのままコピペしていただいて、変えるべき箇所を変えていただくだけでマクロを実行していただけます!
最後にコードの説明もしますので、気になる方は最後までみてください。より理解して頂けやすいかと思います(^^
それではコードがコチラ↓
Dim Obj
Set Obj = WScript.CreateObject("Excel.Application")
Obj.Visible = False
Obj.Workbooks.Open "マクロが組まれてるExcelファイルまでのフルパス"
Obj.Application.Run "実行したいマクロ名"
Obj.ScreenUpdating = True
Obj.Quit
早速VBSを作っていきましょう(^^)/
①メモ帳を開き、上記のコードを張り付ける
②拡張子を「.vbs」にして保存する
こんなファイルが出来上がります↓
これでVBSの準備ができました(*´ω`)
「コマンドライン実行」ステップの設定
VBSの準備ができたらいよいよコマンドラインの実行ですね!
実行の前に、以下の変数を用意しましょう↓
・対象Excelファイルパス(Short Text):マクロが組まれているExcelファイルのフルパスを入れる
・マクロ名(Short Text):マクロの名前を入れる(下図参照↓)
・VBS保存先(Short Text):VBSファイルのフルパスを入れる
準備ができたら「コマンドライン実行」ステップを追加します↓
「アクション」にて、「エクスプレッション」にし、下記のコードを張り付けます↓
>>cscript <<+VBS保存先+>> “<<+対象Excelファイルパス+>>” “<<+マクロ名+>>”<<
これで一通り準備が整いましたので、デバッグしてみましょう!
実行後のファイルを確認すると、マクロが実行されているはずです!(^^)!
終わってみればそこまで難しい設定はいらなかったかもしれません(とか言いつつ僕はめちゃくちゃ苦戦しました笑)
VBSコードの解説
ここからは序盤で作成したVBSのコードの説明を 1行1行 サラッと解説していきますね(*^^*)
Dim Obj
変数の宣言になります。
Set Obj = WScript.CreateObject(“Excel.Application”)
WScript オブジェクトの CreateObject メソッドを使って、Excel のオブジェクトを作成しています。作成した Excel オブジェクトは変数 Obj の中に格納しています。
Obj.Visible = False
Obj.Visible = False とすることで、Obj(Excel オブジェクト)が目に見えないようにしています。
Obj.Workbooks.Open “ マクロが組まれてるExcelファイルまでのフルパス “
Obj.Workbooks.Open “ マクロが組まれてるExcelファイルまでのフルパス ” によって、Obj(Excel オブジェクト)内に対象ファイルを開きます。
Obj.Application.Run “ 実行したいマクロ名 “
Obj.Application.Run “実行したいマクロ名” とすることで、この Excel ファイルの実行したいマクロを実行しています。
Obj.ScreenUpdating = True
Obj.Quit
マクロを実行したExcelファイルを閉じます(※これが大事です。これが無いとExcelが開けません)
最後に
いかがでしたか?
複雑なマクロとなると話が変わってくるかもですが、シンプルなマクロは実行できましたね(*´ω`)
また、「こんなやり方もあるよー!」や「それは違う!」等ございましたら惜しみなくコメントくださいm(__)m
まだまだBizrobo!りまくって、知識蓄えよう!
そして!「Biz充」しよう(^^♪
少しでも興味を持っていただけましたらTwitterのフォロー宜しくお願い致しますm(_ _)m
ではでは、引き続きBizrobo!開発に有益な情報発信していきたいと思いますので、今後ともよろしくお願いいたします!
コメント
すーさん、はじめまして。
私はIT未経験のおばさんひよっこRPAエンジニアです。
いつもすーさんの現場に即したBizRobo!の記事をありがたく参考にさせてもらっています。
ところで今回のコマンドラインでマクロ実行ですが、すーさんの場合VBSの中にエクセルのパスを直打ちしているので、CScriptに +対象Excelファイルパス +マクロ名 は必要ないのではと思い、CScript +VBS保存先のみで実行してみたら、正常稼働しました。
もちろん、CScript +VBS保存先 +対象Excelファイルパス +マクロ名でも正常稼働します。
私はVBAも最近初級の本を読み終えたばかりのレベルで、ましてCScriptやVBScriptは触ったこともなく、なぜそうなるのかを説明できません。
BizRobo!のナレッジではエクセルの絶対パスと書きながら、拡張子のないパスを指定していて、それでも正常稼働しましたし、CScriptやVBScriptはあまり厳格ではない言語なのか、それとも省略できる部分があるのか、ネットで調べたりもしましたが、よくわかりませんでした。
私は今までリモートの開発のみ行っていましたが、今度現場にも出ることになり、すーさんの記事を隅々まで読んで勉強させてもらっています。
記事の更新を心待ちにしていますのでよろしくお願いいたします。応援しています!!!
RPA大好きさん
コメントありがとうございます!
>>すーさんの場合VBSの中にエクセルのパスを直打ちしているので、CScriptに +対象Excelファイルパス +マクロ名 は必要ないのではと思い、CScript +VBS保存先のみで実行してみたら、正常稼働しました。
なんと!そうなんですね!!というかお忙し中検証までしていただきありがとうございます(/_;)必要なければシンプルなほうがいいので、RPA大好きさんの仰ってるやり方のほうが綺麗ですね!
IT未経験と仰いますが、私もIT業界3年目でRPA歴は半年過ぎの若輩者ですので、こういった貴重な意見をもらえると大変助かります( ;∀;)
>>BizRobo!のナレッジではエクセルの絶対パスと書きながら、拡張子のないパスを指定していて、それでも正常稼働しましたし、CScriptやVBScriptはあまり厳格ではない言語なのか、それとも省略できる部分があるのか、ネットで調べたりもしましたが、よくわかりませんでした。
ナレッジでもそうだったんですね!コチラに関しても私自身よくわかりませんでしたので、今後理解を深めていけるよう頑張ります!
>>記事の更新を心待ちにしていますのでよろしくお願いいたします。応援しています!!!
すみません、記事を書いていてこんなに嬉しい言葉はありません・・・。これからも現場目線、かゆいところに手が届くような記事を書いていきます!!本当にありがとうございますm(__)m
すーさん
さっそく返信していただきまして、ありがとうございます。
今日はすーさんの記事の開発の準備【ディレクトリ作成】を読みロボットを作って、現場に出る準備をしようと思います。
今後ともどうぞよろしくお願いいたしますm(__)m