Excel VBAで漢字のふりがなを自動作成する

Excelで漢字のふりがなを別セルに表示しようとした場合、一般的にはPHONETIC(ふりがな)関数を使用します。この関数は特定のセルに含まれる漢字に対して、ふりがな部分を切り出して指定セルに格納するという便利な関数です。

PHONETIC関数で漢字のセルを引数で指定すると

f:id:kazutaka83:20170605151938p:plain

自動的にふりがなだけ抽出することができるという

f:id:kazutaka83:20170605152044p:plain

Excelは文字入力された時の情報を裏側で持っているのでこのような芸当ができます。ということは、当然入力時に変な変換をしていると思ったようなふりがなを出してくれません。

f:id:kazutaka83:20170605152729p:plain

鈴木さんの名前が間違って出力されました。正しいふりがなは「スズキ ナウシカ」さん。文字入力の際に「いま」「しか」と入れたので、その文字がそのまま反映されてしまってます。余談ですが タナカ ピカチュウくんはGoogle IMEだと変換できました。

対処できない文字

Excel上でIME使って入力すればPHONETIC関数を使用できますが、他のCSVファイル等からコピペで持ってきた文字列は変換できません。この場合はPHONETIC関数を介しても漢字がそのまま出力されてしまいます。このような場合はVBAを使って解決すると良いでしょう。

Function GetPhoneticf(i)
GetPhoneticf = Application.GetPhonetic(i)
End Function

あたらしくGetPhoneticfという関数を作りました。 この関数はApplicationオブジェクトのGetPhoneticメソッドを使って、引数(テキスト)を元にふりがなを取ってきます。

使い方(VBAよくわからない人向け)

対象の文字列が含まれているExcelシートを開きます。表示の [ファイル] から [オプション] を開き、[リボンのユーザ設定]で開発にチェックを入れます。

f:id:kazutaka83:20170605164140p:plain

メニューバーの [開発] から [Visual Basic] を選択してエディタを開きます。[挿入] から [標準モジュール] を選択し、エディタ部分に上の文字を貼り付けます。

f:id:kazutaka83:20170605164548p:plain

Excelの表に戻って一般的な関数を呼び出すような感じでセルに書き込むと、他の標準関数同様に候補として出てきます。

f:id:kazutaka83:20170605164908p:plain

PHONETIC関数だと漢字そのままで出てきていたものが、VBA関数でふりがなに変換できました。変換候補の一番上を拾ってくるので「ワタベ 23」という微妙なふりがなが出てきています。

f:id:kazutaka83:20170605165236p:plain

GetPhoneticの引数を空にしてWHILE回すと他の候補文字も拾えるんですが、そこまで組むよりも、一次処理だけやっといて後は手動でちょこちょこ補正しておくほうが良いですね。ワタナベ、ワタベのどっち採用すべきかとか機械的にはわかんないですし。

ExcelVBA最強リファレンス

ExcelVBA最強リファレンス

積読を 技術のチカラで 突き崩す

皆さん本を積んでますか?わたしは結構積んでいます。

本の電子化を推し進めたところ買ったまま積んだ本が増大していき、加えて電子化されてない物理書籍を買ってしまうもので本の管理がてんやわんやになってしまいました。結果、電子書籍を読んだり紙の本を読んだり、途中で別の本に浮気したりと大変なことになっています。

どんな本を所有していて、どの本をどのくらい読んだのかを管理できていないのでこんなことになるのだと思いたち、なんとかしようと仕組みを考えました。

続きを読む

Pythonでバッチを組む際、モジュールのPATHをどう取り込むか

転職してからエンジニアっぽい仕事ができています。ありがとう現職。

で掲題の話なんですが、Pythonのコードを組み上げてバッチファイルを作ろうと思うのです。 利用者がそこまでシステムに詳しくなくても使うためには.batを作っておいて必要に応じてダブルクリックしてもらうのが良いです。簡単なバッチファイルは修正も楽。バッチの中身は単純で

@echo off
python hoge.py -fuga "引数" -in "./hogefuga.csv"

みたいなものを考えています。hoge.pyは作成したモジュール(標準モジュールではない)を呼び出すんですが、作業フォルダにモジュールを置いておくと事故の元かと思ってます。うっかり消すこともありますんで。

なのでsysモジュールを使ってPython PATHを無理やり突っ込むような記述を入れました。

import sys

sys.append(r'C:/hoge/fuga/モジュール格納PATH')

これでも動くんですが、もっとエレガントな方法がありそうです。良いやり方をご存知の方がいれば教えていただけると助かります。

外資系企業に転職して3ヶ月経過

去年の12月に外資GIS企業に転職して早3ヶ月経ちました。初めての転職で、しかも外資系企業勤務ということで大変に緊張していましたが全て杞憂に終わり、今では楽しく仕事しております。今の職場は日本企業からスピンアウトしたという特殊な形態なので、良い意味で外資らしさがありません。外資系のよくあるイメージで「成果を出さないと切られる」というものがありますが、そもそも成果を出さなくても良い環境なんてありませんし。

現状は案件獲得のために準備資料作ったり、商品知識・技術知識を増やしたりしています。 以前と比べて仕事のスピードも上がったようで、前なら2,3日かかりそうな資料を半日で作れるようになってました。この辺の理由をちょっと整理しておこうかと思います。

続きを読む

私的大阪めぐり(鶴橋散策)

関西にいたときの記録第二弾。大阪市内に住んでいたので色々あるき回りましたが、個人的に一番印象に残っているのは鶴橋です。

f:id:kazutaka83:20170122171041j:plain

写真は鶴橋商店街の入り口あたり。

続きを読む

私的奈良めぐり

研修で大阪にしばらくいたことを利用して関西周りを観光してました。住んでいた大阪は当然のこと、奈良、京都、あとはちょっとだけ神戸に行ったのでメモを残しておきます。

f:id:kazutaka83:20170128163847j:plain

続きを読む

ケンタッキーの年末限定メニュー『スモークチキン』が大変よろしい

昨年末の家族料理に向けてケンタッキーの限定メニュー『スモークチキン』を購入しました。f:id:kazutaka83:20161230215517j:plain

スモークチキンは年末時期の期間限定メニュー。インターネットで調べるとギフト商品として人気があるみたいっすね。生ハム原木買うよりも怒られないし、色々やってみたいという好奇心もあり購入。原木は1万8千円しますけどこちらは一本1,300円程度です。購入したのはスタンダード1本とパストラミ2本。4千円強だったかな。

続きを読む