VBAerがはじめてVBScriptを書いた
今まで、自分が会社のプログラムグループの中で一番若かったのですが、
明後日には後輩が入ってきます。
今まで「定例会議の資料の印刷」っていう作業は一番若い自分がやっていたのですが、
おそらく今後はその後輩にお願いすることになります。
ただこの作業については毎週やることなので、
自分は以前からずっと自動化できないかと思っていました。
それがVBScriptでどうにかほぼ自動化できることが分かったので、その方法について
後日簡単にですが書こうと思っています。
で今日のところはまずそもそもVBScriptをほとんど書いたことがなかったので、
書いてみて気付いたことを以下にちょっと挙げようと思います。
VBScriptの作り方と使い方
テキストエディタでスクリプト(VBScript)を書いて拡張子をvbsにして保存します。
実行はダブルクリックするだけです。
でもこれだとエラーが起きたとき何も表示されないので、作ってるときはコマンドプロンプトで実行します。
As Integer とかはいらない
Dim n As Integer
ではなくて
Dim n
のように書くようです。Subの引数のところなんかも一緒。
Sub Print(str)
VBAだったら使える定数が使えなかったり
使えないっぽいやつはスクリプトの最初に自分で定義するみたいです。
まあ現実的にはめんどいので直接値書いちゃうんですが。
const acForm = 2 const acModule = 5 const acMacro = 4 const acReport = 3
開いているウインドウを1つずつ処理するには
Shell.Applicationを使うようです。
Dim objShell Set objShell = CreateObject("Shell.Application") For Each objWindow in objShell.Windows '何か処理 Next
アプリケーションウインドウをアクティベートするには
WScript.ShellのAppActivateを使うようです。
ちなみにAppActivate後はすぐに次のコードを実行せずにちょっと待った方がいいみたいです。
Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate [アプリケーション名]
という訳で
次の処理を遅らせるには
WScript.Sleepです。引数の単位はミリ秒なので、以下だと1秒待ちます。
WScript.Sleep 1000
キー入力するには
WScript.ShellのSendKeysです。
ちなみにこれも入力後、WScript.Sleepでちょっと待たないとうまくいかないことがありました。
WshShell.SendKeys("abcde") ' 普通に文字を入力 WshShell.SendKeys("{ENTER}") ' Enterキー WshShell.SendKeys("{UP}") ' ↑キー WshShell.SendKeys("%fp") ' %はAltなので、Alt + F + P WshShell.SendKeys("+{TAB}") ' +はShiftなので、Shift + Tabキー
今日はここまで。
なんかそういや昔、某巨大掲示板で「自動化くん」みたいな人いませんでしたっけ?