リネームツールをまたーり語るスレ 003

このエントリーをはてなブックマークに追加
11名無しさん@お腹いっぱい。
Function AddNum(sName)
    Dim cMatch, iPos, iNum, jFig
    Const iAdd = 1 '加算値
    Const iFig = 0 '桁  0:桁保持  1〜:桁指定
    With regEx
        .Pattern = "\d+" 'マッチパターン
        .Global = True  '全体を検索する {True|False}
        Set cMatch = .Execute(sName)
    End With
    If cMatch.Count = 0 Then
        AddNum = sName
    Else
        iPos = 0                '最初にマッチしたものに加算
        'iPos = cMatch.Count - 1 '最後にマッチしたものに加算
        With cMatch(iPos)
            iNum = .Value + iAdd
            If iFig = 0 Then jFig = .Length - (Len(iNum) > .Length) Else jFig = iFig
            AddNum = Left(sName, .FirstIndex) & _
                      Right(String(jFig, "0") & iNum, jFig) & _
                      Mid(sName, .FirstIndex + .Length + 1)
        End With
    End If
End Function

桁の指定も出来るようにしてみました。
iAdd = 0 iFig = 5 とすれば、数値はそのままで、
桁だけ揃えることもできます。
  1 → 00001
  10 → 00010
0100 → 00100
但し、既存の桁より小さい桁数を指定すると、
指定桁以上は切られるので注意。