pathに半角カナが含まれていたら化けることがあったので、半角カナを全角に変換する関数を作成しました。
仕様
文字列の中に半角カナがあれば、左記半角カナを全角カナに変換する
入力: str
出力: halfKana2fullKana
例 わたしはガキンチョです → わたしはガキンチョです
Function halfKana2fullKana(str As String) As String
'仕様
'文字列の中に半角カナがあれば、左記半角カナを全角カナに変換する
'入力: str
'出力: halfKana2fullKana
'例 わたしはガキンチョです → わたしはガキンチョです
Dim sp As Long '文字のポインタ
Dim sLen As Long '文字列長さ
Dim moji1 As String '切り出した文字
Dim moji2 As String '切り出した文字
Dim ascMoji1 As Long
Dim ascMoji2 As Long
Dim output As String
Dim flag As Long
If str = "" Then
halfKana2fullKana = ""
Exit Function
End If
sLen = Len(str)
'---- 初期化
output = ""
sp = 1
Do
flag = 0
'---- ポインタ位置から2文字が、2文字半角カナ(濁点、半濁点)ならば全角化する
If sp <= sLen - 1 And 2 <= sLen Then
moji1 = Mid(str, sp, 1) '文字の切り出し
moji2 = Mid(str, sp + 1, 1)
ascMoji1 = AscW(moji1) 'UTFコードを取得
ascMoji2 = AscW(moji2) 'UTFコードを取得
If &HFF61 <= ascMoji1 And ascMoji1 <= &HFF9D And (ascMoji2 = &HFF9E Or ascMoji2 = &HFF9F) Then '濁点、半濁点付きの半角カナならば
output = output & StrConv(moji1 & moji2, vbWide) '2文字を1文字と判断して全角に変換して結合
flag = 1
sp = sp + 2
End If
End If
'---- 選択文字が、1文字半角カナならば全角化する
If flag = 0 Then
moji1 = Mid(str, sp, 1) '文字の切り出し
ascMoji1 = AscW(moji1) 'UTFコードを取得
If &HFF61 < ascMoji1 And ascMoji1 < &HFF9F Then '半角カナならば
output = output & StrConv(moji1, vbWide) '全角に変換して結合
flag = 1
sp = sp + 1
End If
End If
'---- その他の文字なら、そのまま結合
If flag = 0 Then
moji1 = Mid(str, sp, 1) '文字の切り出し
output = output & moji1
sp = sp + 1
End If
If sLen < sp Then Exit Do
Loop
halfKana2fullKana = output
End Function