私が実務で作成・使用しているExcelマクロを公開しますので、よろしければご利用ください。ダウンロードはページ最下部です。
ワークシート[list]の仕様
「ひらがな」「ローマ字」の2列のリストを作成。ひらがな列に対象文字列を入力、標準モジュール[convertList]を実行(ボタンに登録してもOK)すると、ローマ字列にローマ字が記入されます。標準モジュール
Option Explicit
Public Sub convertList()
Dim sheet_list As Worksheet
Set sheet_list = ThisWorkbook.Worksheets("list")
Dim rKana As Range
Set rKana = sheet_list.Range("A2")
Dim kanaConverter As kanaConverter
Set kanaConverter = New kanaConverter
Do While Not IsEmpty(rKana)
rKana.Offset(0, 1).Value = kanaConverter.convertKanaToRoman(rKana.Value)
Set rKana = rKana.Offset(1, 0)
Loop
MsgBox "finished."
End Sub
クラスモジュール
Private kanaRomans As Dictionary
Private Sub Class_Initialize()
Dim rTarget As Range
Set kanaRomans = New Dictionary
Set rTarget = ThisWorkbook.Worksheets("convTable").Range("A2")
Do While Not IsEmpty(rTarget)
If Not kanaRomans.Exists(rTarget.Value) Then
kanaRomans.Add rTarget.Value, rTarget.Offset(0, 1).Value
End If
Set rTarget = rTarget.Offset(1, 0)
Loop
End Sub
Public Function convertKanaToRoman(inputKana)
Dim output, kanaRoman
output = StrConv(inputKana, vbHiragana)
For Each kanaRoman In kanaRomans
output = Replace(output, kanaRoman, kanaRomans(kanaRoman))
Next
output = convert_sokuon(output) '促音判定
output = StrConv(output, vbNarrow) '半角
convertKanaToRoman = output
End Function
Private Function convert_sokuon(inputKana)
Dim place_sokuon As Integer
place_sokuon = InStr(inputKana, "っ")
Do While place_sokuon > 0
inputKana = Left(inputKana, place_sokuon - 1) & _
Mid(inputKana, place_sokuon + 1, 1) & _
Right(inputKana, Len(inputKana) - place_sokuon)
place_sokuon = InStr(place_sokuon + 1, inputKana, "っ")
Loop
convert_sokuon = inputKana
End Function
ワークシート[convTable]の内容
特殊な変換は、一番上に記載します。上から順に変換されていくため。業務に応じてルール表を編集できますが、VBAではなくワークシート上の編集ですので、コードが分からない人でもいじれるのが利点です。仮名 ローマ字
いおんもーる AEONMALL
いおん AEON
えー A
びー B
しー C
りょう ryou
りゅう ryuu
みょう myou
みゅう myuu
ぴょう pyou
びょう byou
ひょう hyou
ぴゅう pyuu
びゅう byuu
ひゅう hyuu
にょう nyou
にゅう nyuu
ちょう tyou
ちゅう tyuu
じょう jyou
しょう syou
じゅう juu
しゅう syuu
ぎょう gyou
きょう kyou
ぎゅう gyuu
きゅう kyuu
をう ou
ろう rou
るう ruu
りょ ryo
りゅ ryu
りゃ rya
よう you
ゆう yuu
もう mou
むう muu
みょ myo
みゅ myu
みゃ mya
ぽう pou
ぼう bou
ほう hou
ぷう puu
ぶう buu
ふう fuu
ぴょ pyo
びょ byo
ひょ hyo
ぴゅ pyu
びゅ byu
ひゅ hyu
ぴゃ pya
びゃ bya
ひゃ hya
のう nou
ぬう nuu
にょ nyo
にゅ nyu
にゃ nya
どう dou
とう tou
づう zuu
つう tsu
ちょ tyo
ちゅ tyu
ちゃ tya
ぞう zou
そう sou
ずう zuu
すう suu
じょ jyo
しょ syo
じゅ jyu
しゅ syu
じゃ jya
しゃ sya
ごう gou
こう kou
ぐう guu
くう kuu
ぎょ gyo
きょ kyo
ぎゅ gyu
きゅ kyu
ぎゃ gya
きゃ kya
おお oo
おう ou
うう uu
ん n
を o
ゑ e
ゐ i
わ wa
ろ ro
れ re
る ru
り ri
ら ra
よ yo
ゆ yu
や ya
も mo
め me
む mu
み mi
ま ma
ぽ po
ぼ bo
ほ ho
ぺ pe
べ be
へ he
ぷ pu
ぶ bu
ふ fu
ぴ pi
び bi
ひ hi
ぱ pa
ば ba
は ha
の no
ね ne
ぬ nu
に ni
な na
ど do
と to
で de
て te
づ du
つ tu
ぢ ji
ち ti
だ da
た ta
ぞ zo
そ so
ぜ ze
せ se
ず zu
す su
じ ji
し si
ざ za
さ sa
ご go
こ ko
げ ge
け ke
ぐ gu
く ku
ぎ gi
き ki
が ga
か ka
お o
え e
う u
い i
あ a
0 件のコメント:
コメントを投稿