5
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

濁点・半濁点の処理(Excel for Mac)

MacのExcel VBAで、ブック名などに濁音(ば)半濁音(ぱ)が含まれていると、うまく扱うことができずエラーになります。

Windowsのファイルシステムでは「ば」「ぱ」を1文字として扱う文字コード体系 (NFC) を採用しているのに対し、MacOSでは2文字として扱う体系 (NFD) を採用しているのが理由だそうです。

これを回避するため、NFDの濁点半濁点つき文字列を、NFCに変換する関数を作ってみました。あまり変な文字列には対応していません(濁点記号が先頭にあるとか)。検証環境は Excel 2011 for mac です。

ToNFC.bas
'NFDの濁点・半濁点つき文字列をNFCに変換
Function ToNFC(str) as string

    Dim i, nfdChrs, nfcChr

    Do
        i = InStr(str, ChrW(12441))             '濁点
        If i = 0 Then Exit Do
        nfdChrs = Mid(str, i - 1, 2)
        nfcChr = ChrW(AscW(Mid(str, i - 1, 1)) + 1) 
        str = Replace(str, nfdChrs, nfcChr)
    Loop
    Do
        i = InStr(str, ChrW(12442))             '半濁点
        If i = 0 Then Exit Do
        nfdChrs = Mid(str, i - 1, 2)
        nfcChr = ChrW(AscW(Mid(str, i - 1, 1)) + 2)
        str = Replace(str, nfdChrs, nfcChr)
    Loop

    ToNFC = str

End Function
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
5
Help us understand the problem. What are the problem?