[文字列の一部分を取得する(ASCII)]

文字数を指定して、文字列の一部分を抜き出します。
LeftB(), MidB(), RightB() 関数は、UNICODE のバイト数で処理するので、アスキー文字(シフトJIS)用の処理を作ってみました。

【ソースコード】
[tips0025.vbs]
Option Explicit

Function MidAscByte(ByVal strSjis, ByVal lngStartPos, ByVal lngGetByte, ByVal blnZenFlag)
' strSjis:      切り出す文字列
' lngStartPos:  開始位置
' lngGetByte:   取得バイト数("" 時は lngStartPos 以降全て)
' blnZenFlag:   全角文字が区切り位置で分割するときの動作
'               True= スペースに変換, False= そのまま出力
    Dim lngByte             ' バイト数
    Dim lngLoop             ' ループカウンタ
    Dim strChkBuff          ' 確認用バッファ
    Dim strLastByte         ' 最終バイト

    On Error Resume Next

    MidAscByte = ""
    If lngGetByte = "" Then
        ' 最大文字数をセットしておく
        lngGetByte = Len(strSjis) * 2
    End If
    lngGetByte = CLng(lngGetByte)

    ' 開始位置
    lngByte = 0
    For lngLoop = 1 To Len(strSjis)
        strChkBuff = Mid(strSjis, lngLoop, 1)
        If (Asc(strChkBuff) And &HFF00) = 0 Then
            lngByte = lngByte + 1
        Else
            lngByte = lngByte + 2
            ' 全角の2バイト目が開始位置のとき
            If lngByte = lngStartPos Then
                If blnZenFlag = True Then
                    MidAscByte = " "
                Else
                    MidAscByte = Asc(strChkBuff) And &H00FF
                    If MidAscByte < 0 Then
                        MidAscByte = 256 + MidAscByte
                    End If
                    MidAscByte = ChrB(MidAscByte)
                End If
                lngLoop = lngLoop + 1
            End If
        End If
        If lngByte >= lngStartPos Then
            Exit For
        End If
    Next

    ' 取得
    lngByte = LenB(MidAscByte)
    If lngByte < lngGetByte Then
        For lngLoop = lngLoop To Len(strSjis)
            strChkBuff = Mid(strSjis, lngLoop, 1)
            MidAscByte = MidAscByte & strChkBuff
            If (Asc(strChkBuff) And &HFF00) = 0 Then
                lngByte = lngByte + 1
            Else
                lngByte = lngByte + 2
            End If
            If lngByte >= lngGetByte Then
                Exit For
            End If
        Next
    End If

    lngByte = LenAscByte(MidAscByte)
    If lngByte > lngGetByte Then
        ' 終端が全角1バイト目のとき。意味ないかも(笑)
        If blnZenFlag = True Then
            MidAscByte = Mid(MidAscByte, 1, Len(MidAscByte) - 1) & " "
        Else
            strLastByte = Fix((Asc(Right(MidAscByte, 1)) And &HFF00) / 256)
            If strLastByte < 0 Then
                strLastByte = 256 + strLastByte
            End If
            MidAscByte = Mid(MidAscByte, 1, Len(MidAscByte) - 1) & ChrB(strLastByte)
        End If
    End If
End Function

Function LeftAscByte(ByVal strSjis, ByVal lngGetByte, ByVal blnZenFlag)
    LeftAscByte = MidAscByte(strSjis, 1, lngGetByte, blnZenFlag)
End Function

Function RightAscByte(ByVal strSjis, ByVal lngGetByte, ByVal blnZenFlag)
    RightAscByte = StrReverse(strSjis)
    RightAscByte = MidAscByte(RightAscByte, 1, lngGetByte, blnZenFlag)
    RightAscByte = StrReverse(RightAscByte)
End Function


On Error Resume Next

Dim strAscii            ' 文字列

strAscii = "abcあいうえおabc"

WScript.Echo "左端7バイトは「" & LeftAscByte(strAscii, 7, True) & "」です。"
WScript.Echo "3〜5バイトは「" & MidAscByte(strAscii, 3, 3, True) & "」です。"
WScript.Echo "右端7バイトは「" & RightAscByte(strAscii, 7, True) & "」です。"

【実行結果】
C:\> cscript //NoLogo tips0025.vbs
左端7バイトは「abcあい」です。
3〜5バイトは「cあ」です。
右端7バイトは「えおabc」です。