はじめに
VBAにはStrConvという全角と半角の変換が行える関数が存在するのですが、VBScriptにはないようなので、作成しました。
VBScriptで英数字の半角を全角に、または全角を半角に変換する関数です。
記号やカナには対応していません。
2020.7.27 改良
記号にも対応
参考元:英数文字列を半角または全角に変換
ソースコード
Option Explicit
Const HAN = " !#$%&?\()[]{}<>=-+*^/,._;:|@`・" ' ~"'を除く
Const ZEN = " !#$%&?\()[]{}<>=-+*^/,._;:|@`・"
'*****************************************************************************
'[概要] 半角英数字を全角に変換する
'[引数] 変換対象文字列
'[戻値] 変換後文字列
'*****************************************************************************
Function StrConvWide(ByVal strWord)
Dim i, j, strChar, lngChar
For i = 1 To Len(strWord)
strChar = Mid(strWord, i, 1)
lngChar = Asc(strChar)
If Asc("A") <= lngChar And lngChar <= Asc("Z") Then
strChar = Chr(lngChar + Asc("A") - Asc("A"))
ElseIf Asc("a") <= lngChar And lngChar <= Asc("z") Then
strChar = Chr(lngChar + Asc("a") - Asc("a"))
ElseIf Asc("0") <= lngChar And lngChar <= Asc("9") Then
strChar = Chr(lngChar + Asc("0") - Asc("0"))
Else
j = InStr(1, HAN, strChar)
If j > 0 Then
strChar = Mid(ZEN, j, 1)
End If
End If
StrConvWide = StrConvWide & strChar
Next
End Function
'*****************************************************************************
'[概要] 全角英数字を半角に変換する
'[引数] 変換対象文字列
'[戻値] 変換後文字列
'*****************************************************************************
Function StrConvNarrow(ByVal strWord)
Dim i, j, strChar, lngChar
For i = 1 To Len(strWord)
strChar = Mid(strWord, i, 1)
lngChar = Asc(strChar)
If Asc("A") <= lngChar And lngChar <= Asc("Z") Then
strChar = Chr(lngChar - Asc("A") + Asc("A"))
ElseIf Asc("a") <= lngChar And lngChar <= Asc("z") Then
strChar = Chr(lngChar - Asc("a") + Asc("a"))
ElseIf Asc("0") <= lngChar And lngChar <= Asc("9") Then
strChar = Chr(lngChar - Asc("0") + Asc("0"))
Else
j = InStr(1, ZEN, strChar)
If j > 0 Then
strChar = Mid(HAN, j, 1)
End If
End If
StrConvNarrow = StrConvNarrow & strChar
Next
End Function
余談
VBAでは使える、select case の範囲指定がvbsでは使えないことを初めて知りました。
Select Case 判定値
Case 値1 To 値2 'Toを使った範囲指定は出来ない
関連記事
VBScriptで全角・半角変換を行う関数 ※この記事
VBScriptでカタカナの全角・半角変換を行う関数
VBScriptでひらがな・カタカナ変換を行う関数