コンパイル自動化メモ

'' ' 関数名: 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