コンパイル自動化メモ
'' ' 関数名: cmpl ' '' Function cmpl()
Dim ObjFs '* ファイルシステムオブジェクト *'
Dim ObjTxt '* テキストオブジェクト *'
Dim RgExp '* 正規表現置換オブジェクト *'
Dim McrPth '* macroフォルダまでの絶対パス *'
Dim MkFlPth '* *cmpl*までの絶対パス *'
Dim LdPth '* *総合*フォルダまでの絶対パス *'
Dim LstYenPos '* パス末尾の\位置 *'
Dim YenNum '* パス内の\個数 *'
Dim RplcCnt '* *cmpl*特定テーブルカウンタ *'
Dim UsrNm '* ユーザアカウント名 *'
Dim cmd '* コマンド *'
'************************************************************************************************'
'* Step1: 前準備 *'
'************************************************************************************************'
UsrNm = CreateObject("WScript.Network").UserName '* ユーザアカウント名取得 *'
McrPth = "C:\Users\" + UsrNm _
+ "\AppData\Roaming\sakura\macro\" '* macroフォルダまでの絶対パス取得 *'
Set ObjFs = CreateObject("Scripting.FileSystemObject") '* ファイルシステムオブジェクト作成 *'
Set ObjTxt = ObjFs.OpenTextFile(McrPth +"*共通*.vbs") '* テキストオブジェクト作成 *'
Set RgExp = New RegExp '* 置換オブジェクト作成 *'
ExecuteGlobal ObjTxt.ReadAll() '* *共通*.vbsをインクルード *'
ObjTxt.Close '* *共通*.vbsを閉じる *'
'************************************************************************************************'
'* Step2: *cmpl*までの絶対パス取得 *'
'************************************************************************************************'
MkFlPth = GetFilename '* アクティブファイルまでの絶対パス取得 *'
for RplcCnt = 0 to UBound(MKTbl) step 2 '* **cmpl**パス探索 *'
RgExp.Pattern = MKTbl(RplcCnt) '* 置換パターンセット *'
If RgExp.Test(MkFlPth) Then '* 置換パターンとマッチした時 *'
MkFlPth = RgExp.Replace _
(MkFlPth, MKTbl(RplcCnt+ 1)) '* **cmpl**までの絶対パス取得 *'
Exit For '* Step2処理終了 *'
End If
next
'************************************************************************************************'
'* Step3: *cmplL*フォルダまでの絶対パス取得 *'
'************************************************************************************************'
LdPth = GetFilename '* アクティブファイルまでの絶対パス取得 *'
Do '* *cmplL*フォルダ発見するまでパス末尾削除 *'
LstYenPos = InstrRev(LdPth, "\") '* パス末尾の\位置を取得 *'
LdPth = Left(LdPth, LstYenPos - 1) '* パス末尾削除 *'
YenNum = Len(LdPth) - Len(Replace(LdPth, "\", "")) '* パス内の\個数取得 *'
If ObjFs.FolderExists(LdPth + "\*cmplL*") = True Then '* *総合*フォルダが見つかった場合 *'
LdPth = LdPth + "\*cmplL*" '* *総合*フォルダまでの絶対パス取得 *'
Exit Do '* Step3処理終了 *'
End If
If YenNum < 1 Then '* \の個数が5個未満になった場合 *'
MsgBox "*cmplL*フォルダが見つかりませんでした" '* エラー出力 *'
Exit Function '* 関数終了 *'
End If
Loop
'************************************************************************************************'
'* Step4: オブジェクト参照解除 *'
'************************************************************************************************'
Set ObjFs = Nothing '* ファイルシステムオブジェクトへの参照解除 *'
Set ObjTxt = Nothing '* テキストオブジェクトへの参照解除 *'
Set RgExp = Nothing '* テキストオブジェクトへの参照解除 *'
'************************************************************************************************'
'* Step5: コマンド実行 *'
'************************************************************************************************'
cmd = "echo make in " + MkFlPth _
+ "&cd " + MkFlPth _
+ "&ipconfig" _
+ "&" + McrPth +"mkInTskCnplt.bat" _
+ "&echo make in " + LdPth _
+ "&cd " + LdPth _
+ "&ipconfig" _
+ "&" + McrPth +"mkInLdCnplt.bat" _
+ "&exit"
Editor.ExecCommand cmd '* コマンド実行 *'
End Function
cmpl