LoginSignup
1
0

More than 1 year has passed since last update.

EXCEL VBAで半角カタカナを全角にする

Last updated at Posted at 2022-11-02

半角のカタカナのみを全角に変換したい時がありますが、例えばEXCELの式だと、英数字も全角にしてしまったり、ひらがなや漢字もカタカナにしてしまったりと、あと一息です。
半角カタカナを含むCSVを読み込んで、全角カタカナに変換したCSVを吐き出すVBAを書きました。ご参考まで。

  • ANSI Shift-JISのみ対応です。
  • 一旦全角に変換した後、アルファベット、数字、記号を半角にします。
  • ダブルクォーテーションは全角のままにしています。

ご利用は自由です。自分の環境では自分の期待通りに動いていますが、保証の限りではありませんので、利用は自己責任でお願いします m(..)m


Sub Main()
    '変換元のファイル名を指定してください(ANSI Shift-JISのみ対応)
    infile_name = "D:\変換元.csv"
    
    '変換後のファイル名を指定してください
    outfile_name = "D:\変換先.csv"
    
    
    '変換元、変換後のファイルを開きます(変換元=読み取り専用 変換後=上書き)
    Open infile_name For Input As #1
    Open outfile_name For Output As #2
    
    'ファイルを順次読み込みます
    Do Until EOF(1)
        Line Input #1, buf
        
        'まず、すべてを全角文字に変換します
        buf = StrConv(buf, 4)
        
        outbuf = ""
        For lp = 1 To Len(buf)
            outbuf = outbuf & tohalf(Mid(buf, lp, 1))
        Next lp
        
        '1行中にカンマがひとつだけあることを確認します
        If Len(outbuf) - Len(Replace(outbuf, ",", "")) <> 1 Then
            MsgBox "カンマの数がひとつではありません[" & outbuf & "]"
        End If
        
        '変換結果を出力します
        Print #2, outbuf
    Loop
    
    '変換元、変換後のファイルを閉じます
    Close #2
    Close #1
End Sub

'全角のアルファベット、数字、記号を半角に変換するサブルーチン(全角のダブルクォーテーションは半角に戻さない)
Function tohalf(str)
    fullstr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'()-^\@[;:],./\=~|`{+*}<>?_"
    halfstr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'()-^\@[;:],./\=~|`{+*}<>?_"
    
    tohalf = Replace(str, Chr(9), ",")
    For lp = 1 To Len(fullstr)
        If str = Mid(fullstr, lp, 1) Then
            tohalf = Mid(halfstr, lp, 1)
            Exit For
        End If
    Next lp
End Function

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0