2008年5月17日

英数にフリガナを

メールボックスサービスをやらせてもらってる某クライアント様がおりまして、ちょっと前に約130件ほどのメールアドレスを発行させてもらったんす。

が、クライアント様から

メール設定の書いてある紙、パスワードとかの数字のゼロとアルファベットのオーとか小文字のエルとか数字のイチとか区別つかんから何とかして


と苦情が入ってしまってマズー。


つかね、こういう商売してると一気に大量のパスワードを発行する事になるんすよね。
そのパスワードも数字、アルファベットの大文字・小文字入り混じりのランダムな文字列を生成しないといけないんで手作業なんかじゃやっとれまへん。

つー事で、パスワード生成ツールとかを使うんすけど、前まで使ってたのだと紛らわしい文字とかはパスワードに使わないように設定できたんすよね。

ところが今回、そのツールの調子が悪くて別のツール使ったら紛らわしい文字とかはねられなくて。

全然余裕ないタイミングでの作業だったんで「なんとかなってくれろ!」とそのまんま行っちゃったら・・・やっぱダメやね。

とほほ

という訳で、すでに発行してしまってるパスワードはそのままに、文字の区別がつくようにって考えるとフリガナをつけるしかないねぇと。

[例] d3GHkm0e → ディ・サン・ジー(大)・エイチ(大)・ケィ・エム・ゼロ・イー

で、英数字をカナに変換してくれるツールとかないかと探したけども、バッチリなのが見つからなくて。でも、Excelのマクロ系で参考になりそうなのを見つけたので(元サイト失念)それをいじりまして。
念のため、メールアドレスでも対応できるようにしておいて。

てことで、誰の役にもたちゃしないやろけども、一応公開。

つか、実はVBA苦手(つかほとんど触った事ない)ので、自分の備忘録か。


- - - - -

・Execlで新規マクロ登録(マクロ名は適当に)


Sub マクロ名()

Dim strTarget$, strKana$, strTmp$, Buf$
Dim rngCur As Range
Dim aryKana(65, 1) As String
Dim tmp
Dim i As Long, j As Long

strTarget = "0123456789"
strTarget = strTarget & "abcdefghijklmnopqrstuvwxyz"
strTarget = strTarget & "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
strTarget = strTarget & ".@-_"

strKana = "ゼロ,イチ,ニ,サン,ヨン,ゴ,ロク,ナナ,ハチ,キュウ,"
strKana = strKana & "エー,ビー,シー,ディ,イー,エフ,ジー,エイチ,アイ,ジェイ,"
strKana = strKana & "ケー,エル,エム,エヌ,オー,ピー,キュー,アール,エス,ティ,"
strKana = strKana & "ユー,ブイ,ダブリュ,エックス,ワイ,ゼット,"
strKana = strKana & "エー(大),ビー(大),シー(大),ディ(大),イー(大),エフ(大),ジー(大),エイチ(大),アイ(大),ジェイ(大),"
strKana = strKana & "ケー(大),エル(大),エム(大),エヌ(大),オー(大),ピー(大),キュー(大),アール(大),エス(大),ティ(大),"
strKana = strKana & "ユー(大),ブイ(大),ダブリュ(大),エックス(大),ワイ(大),ゼット(大),"
strKana = strKana & "ドット,アット,ハイフン,アンダースコア"

tmp = Split(strKana, ",")
For i = 1 To 66
aryKana(i - 1, 0) = Mid(strTarget, i, 1)
aryKana(i - 1, 1) = tmp(i - 1)
Next i
For Each rngCur In Selection
If Not IsEmpty(rngCur) Then
Buf = CStr(Trim(rngCur.Value))
Buf = StrConv(Buf, vbNarrow)
strKana = ""
For i = 1 To Len(Buf)
strTmp = Mid(Buf, i, 1)
For j = 1 To 66
If strTmp = aryKana(j - 1, 0) Then
strKana = strKana & aryKana(j - 1, 1) & " "
Exit For
End If
Next j
Next i
strKana = Replace(Trim(strKana), " ", "・")
rngCur.Characters.PhoneticCharacters = strKana
End If
Next rngCur

End Sub

- - - - -

↑をフリガナに変換したい文字列のセルで実行。
その後、実際にフリガナを入れるセルで

=PHONETIC(フリガ対象セル)

としてやればおkって感じすね。


で、またも超マジメエントリやん。
しらっとオッパイって書いとこ。

0 件のコメント:

コメントを投稿