EXCELのコピペ漢字をひらがなに自動変換する(完成版)

EXCELのコピペ漢字をひらがなに自動変換する(完成版)

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

さて、今回は実際に「困ってます~!」という方々が身近いたので、そんな人達のリクエストに応えてみました。

それというのも『「漢字文字列」に「ひらがな」も表示させたい!』というもの。
お困りの方々はこれまで手入力で変換作業を行い入力していたそうです。時間がかかりますし、間違えを引き起こしやすそうですね。

困っている人がいれば無視はできない!
今回もEXCELで無駄な労力を省くべく、このHAMA-Gが一肌脱いでみました。

まずは関数で解決できないものか試してみた

あまり知られていないかもしれませんが、EXCELには入力した文字列をひらがなで表示させる関数が存在しています。

<関数>

 =PHONETIC([文字列(文字列を入力したセル)])

このマイナー関数を引っさげて、他部署メンバーに共有したところ、大喜びされました。

しかし、5分後にはこのメンバーも晴れない顔に。なんでも、この関数を持ってしても漢字文字列にふりがなを付けることができていないようです。

私も実際にその内容を確認し、試行錯誤すること20分。あれれ、やはりダメっぽい。。

PHONETIC関数は実際に手入力したもの文字情報しか認識しないようで、コピペで貼り付けた文字列に対してはこの関数が効かず、コピペした文字列そのままが出力されてしまうようです。
う~ん、50点。

関数がダメなら作るしかない

「今回はできなかったね」で済まそうにも、今後も頻繁に質問が飛んできそうな事例だったので無視するわけにもいかず……、関数に代わるツールを作ってみることにしました。

“昔取った杵柄”というヤツで、過去の職場で得た知識を駆使してみました。

久しぶりのVBA。懐かしい……。
思い出にふけるのはこれくらいにして、実際に以下のような内容で手順で作成していきました。

1:ペースト領域を確保する

今回のテストデータは「庁舎名」を利用。以下のようなイメージになります。

image07

2:ボタンの配置を行う

グローバルメニューの開発タブを開きます。[挿入]にてActiveXコントロールからボタンを選択し、好きな場所へ配置します。以下のようなイメージになります。

image10

ちなみに、配置の調整等はデザインモードにしておけば、大きさなど自由にいつでも変更ができます。

3:ボタン名称を変更する

デザインモードにし、先ほど配置したボタンにカーソルを合わせた状態で右クリック[プロパティを表示]を選択します。
表示されたプロパティの中にある「Caption」項目の内容を変更すると、ボタンの表示名が変更されます。

image09

4:プログラムを作成する

では、さっそくプログラムを組んでみましょう。

これから作成するプログラムは、先ほどまで作成していたデザインモード時に作成したボタンをダブルクリックすることで、自動でプログラム作成用エディタが立ち上がり、プログラムが起動される仕様になります。

次に実際に作ったプログラムは以下のとおりです。

Private Sub CommandButton1_Click()
    '文字データ取得
    Dim Column As Long
    Dim line As Long
    Dim value() As String
    Column = 2
    line = 0
    '参照先カラム全て取得(未入力部分まで)
    Do While ActiveSheet.Cells(Column, 5) <> ""
        '配列を拡張しながら値を取得
        ReDim Preserve value(line)
        value(line) = ActiveSheet.Cells(Column, 1)
        Column = Column + 1
        line = line + 1
    Loop
    
    '文字データよみかな変換
    Dim Index As Long
    Dim cnt As Long
    Dim viewColumn As Long
    Dim tempValue As String
    
    viewColumn = 2
    '抽出したデータ配列を全て参照
    For Each itm In value()
       '値の読み仮名(カタカナ)を取得
       tempValue = Application.GetPhonetic(itm)
       '読み仮名(カタカナ)をひらがなに変換して出力
       Cells(viewColumn, 6) = StrConv(tempValue, vbHiragana)
       viewColumn = viewColumn + 1
    Next itm
End Sub

image11

subプロシージャはボタンをクリック時点で勝手に作成されます。また、コントロールを直接クリックなどして作成したプロシージャはコントロール名と紐付いているので、変更したり削除すると動かなくなります。仮に変更したい場合は、デザインモードのプロパティからから変更するようにしましょう。

5:実際の挙動を見る

自動ですべて変換がかかっていくので、画像ではわかりづらいかもしれませんが、デザインモードを解除してボタンをクリックすると見事に変換がかかりました。
100点!

image03

最終的に案内したものは……コレだ!

現在の業務ではPCツール作成系の仕事はそうないので、久しぶりにベーシック言語を触ってみました。すごく懐かしく、プログラム途中で赤ちゃん返りしかかったほどです(嘘)。

やっぱりこの手の言語は歴史も古く、厳密なチェックもあるので、制限などが多い強固なシステム開発に向いているのは改めて感じました。

これまで紹介したものはあくまでも検証を兼ねて制作したものですので、実際に困っていた方々が使いやすいようにインターフェイスを変えて、このツールを提供しました。今後使ってくれることでしょうし、ボタンを押す度に、僕のことを思い出してくれるでしょう。

最後に他部署メンバーに提供した“最終版”をご案内することで、今回は筆を置かせていただきます。
ではまた!

<インターフェイス(最終版)>

image13

<実際のプログラム(最終版)>

Private Sub CommandButton1_Click()
    '文字データ取得
    Dim Column As Long
    Dim Row As Long
    Dim line As Long
    Dim value() As String
    Column = 2
    Row = 1
    line = 0
    '参照先カラム全て取得(未入力部分まで)
    Do While ActiveSheet.Cells(Column, Row) <> ""
        '配列を拡張しながら値を取得
        ReDim Preserve value(line)
        value(line) = ActiveSheet.Cells(Column, 1)
        Column = Column + 1
        line = line + 1
    Loop
    
    '文字データよみかな変換
    Dim Index As Long
    Dim cnt As Long
    Dim viewColumn As Long
    Dim tempValue As String
    
    viewColumn = 2
    '抽出したデータ配列を全て参照
    
    If line = 0 Then
        MsgBox "変換したい文字(漢字)を入力してください!", vbOKOnly
        Exit Sub
    End If
    
    For Each itm In value()
       '値の読み仮名(カタカナ)を取得
       tempValue = Application.GetPhonetic(itm)
       '読み仮名(カタカナ)をひらがなに変換して出力
       Cells(viewColumn, (Row + 1)) = StrConv(tempValue, vbHiragana)
       viewColumn = viewColumn + 1
    Next itm
End Sub

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ