JISからShift_JISへ変換する

[vb]
Function JIS2ShJIS(ByVal SrcStr As String) As String
Const adTypeText = 2
Dim myStream As Object
Dim tmpS As String
Set myStream = CreateObject("ADODB.Stream")
myStream.Open
myStream.Type = adTypeText
myStream.Charset = "Shift_JIS"
myStream.WriteText SrcStr
myStream.Position = 0
myStream.Type = adTypeText
myStream.Charset = "iso-2022-jp"
tmpS = myStream.ReadText()
myStream.Close
Set myStream = Nothing
JIS2ShJIS = tmpS
End Function
[/vb]
ADODB.Streamを使えばJISコード(ISO-2022-JP)の文字列をShift_JISコードの文字列に簡単に変換することができる。
漢字(全角文字)だけの文字列の場合、変換元となる文字列にJIS X 0208へ切替えるエスケープシーケンスが付いていない場合がある。
こういう場合は、JIS X 0208へ切替えるエスケープシーケンスは『[ESC]$B』なので、次のような補助関数を作って呼び出せば良い。
[vb]
Function JIS2ShJISex(ByVal SrcStr As String) As String
Dim tmpS As String
tmpS = Chr(&H1B) + Chr(&H24) + Chr(&H42)
tmpS = tmpS + SrcStr
tmpS = JIS2ShJIS(tmpS)
JIS2ShJISex = tmpS
End Function
[/vb]
補足だが、当然ながらアルファベット(半角文字)についてはどちらもASCIIコードを使っているので変化は無い。
更におまけで書いておくと、JIS X 0208からASCIIへの切替えエスケープシーケンスは『[ESC](B』(&H1B2842)である。