• ベストアンサー

エクセルのsetphonetic関数

cj_moverの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.5

#3-4、cjです。連続の自己レスです。すみません。 お昼を食べている時に、また不備に気付いたので追加レスします。 なるべく > 簡易なもので < という意図で紹介した#3ですが、 但し書きが必要なのを忘れていました。 実行時の条件として、対象(アクティブ)セルについて  ・ユーザーの手書きによるフリガナが設定されていないこと。  ・[フリガナの設定][種類]で全角カタカナを選んでいること の2点が必須で、これに外れると無限ループになってしまいます。 対策を加えてもコードの文字数に大差ないので、 以下、対策済のものに差し替え、#3-4の記述の廃棄をお願いします。 度々、失礼しました。 ' ' /// フリガナを設定。実行の度に次の候補にて設定。 Sub Re8768439c() Dim sS As String Dim sD As String   With ActiveCell ' ※ 必ず、対象セルをアクティブにしてから実行。     ' ' フリガナを表示する     If Not .Phonetic.Visible Then .Phonetic.Visible = True '    ' ' フリガナを 同じ行の指定列 にて 参照・表示する '    With .EntireRow.Cells(1, "C") ' ← "C" ? 列を要指定 '      If .FormulaLocal = "" Then .FormulaLocal = "=PHONETIC(" & ActiveCell.Address & ")" '    End With     ' ' フリガナが設定されているか、判別     If .Phonetics.Count > 0 Then ' フリガナが設定されているなら       ' ' 現在設定されているフリガナ を 全角カタカナ で 取得       sS = StrConv(.Phonetic.Text, vbKatakana Or vbWide)       ' ' Application.GetPhonetic メソッドで フリガナ第一候補 を取得       ' ' セルの値(漢字?相当)を引数に       sD = Application.GetPhonetic(.Value)       ' ' 現在のフリガナ と フリガナ候補 が 一致するまで       ' ' または フリガナ候補 が 尽きるまで ループ       Do Until sD = sS Or sD = ""         sD = Application.GetPhonetic() ' 次のフリガナ候補 を取得       Loop       ' ' 次のフリガナ候補 を取得       sD = Application.GetPhonetic()       If sD = "" Then ' フリガナ候補 が 空の文字列 なら         .Phonetics.Delete ' フリガナ設定を削除       Else ' フリガナ候補 が 空 でなければ         .Phonetic.Text = sD ' フリガナ候補 を フリガナに設定       End If     Else ' フリガナが設定されていないなら       .SetPhonetic ' フリガナ設定(フリガナ第一候補)     End If   End With End Sub

snorioo
質問者

補足

本格的なコードを書いていただいてありがとうございます。コピペでためさせていただきました。 以下の点を質問させてください。 Sub Re8768439c() Dim sS As String Dim sD As String   With ActiveCell ' ※ 必ず、対象セルをアクティブにしてから実行。     ' ' フリガナを表示する     If Not .Phonetic.Visible Then .Phonetic.Visible = True '    ' ' フリガナを 同じ行の指定列 にて 参照・表示する '    With .EntireRow.Cells(1, "C") ' ← "C" ? 列を要指定 '      If .FormulaLocal = "" Then .FormulaLocal = "=PHONETIC(" & ActiveCell.Address & ")" '    End With     ' ' フリガナが設定されているか、判別     If .Phonetics.Count > 0 Then ' フリガナが設定されているなら       ' ' 現在設定されているフリガナ を 全角カタカナ で 取得       sS = StrConv(.Phonetic.Text, vbKatakana Or vbWide)       ' ' Application.GetPhonetic メソッドで フリガナ第一候補 を取得       ' ' セルの値(漢字?相当)を引数に       sD = Application.GetPhonetic(.Value)       ' ' 現在のフリガナ と フリガナ候補 が 一致するまで       ' ' または フリガナ候補 が 尽きるまで ループ       Do Until sD = sS Or sD = ""         sD = Application.GetPhonetic() ' 次のフリガナ候補 を取得       Loop       ' ' 次のフリガナ候補 を取得       sD = Application.GetPhonetic() ???       If sD = "" Then ' フリガナ候補 が 空の文字列 なら         .Phonetics.Delete ' フリガナ設定を削除       Else ' フリガナ候補 が 空 でなければ         .Phonetic.Text = sD ' フリガナ候補 を フリガナに設定       End If     Else ' フリガナが設定されていないなら       .SetPhonetic ' フリガナ設定(フリガナ第一候補)     End If   End With End Sub 以下質問 ' ' 次のフリガナ候補 を取得       sD = Application.GetPhonetic() ??? ???の行はいらないのではないでしょうか。変数を調べたところ、これを実行する前と実行した後で変数の値が違っています。 この行をコメントアウトすると.Phonetic.Text = sDのところでsDの値が目標の値になりますが、実行するとさらに次の候補になってしまうようです。 また   Else ' フリガナ候補 が 空 でなければ     .Phonetic.Text = sD ' フリガナ候補 を フリガナに設定   End If を実行するとたしかにsDは目標の新しい振り仮名に設定されていて、.Phonetic.Textの値も新しいものに変わっています。 ところが再度コードを実行すると ' ' Application.GetPhonetic メソッドで フリガナ第一候補 を取得       ' ' セルの値(漢字?相当)を引数に       sD = Application.GetPhonetic(.Value) を実行した後のsDの値が変更する前の元の値にもどってしまっています。そのためsetPhonetic関数の結果も変化しません。 どこに原因があるのか分かりましたらよろしくご教示ください。

関連するQ&A

  • Excelの漢字からカナを出力する「Phonetic関数」について

    テキストファイルに書き込まれた音楽の日本語タイトル(漢字・かな・カナ・英字の混ざるもの)を、Excelを使用し、自動的に半角カタカナに変換するマクロを使用しています。使用している関数は「SetPhonetic」を使用しています。 この関数で疑問があるのですが、変換する元のファイルはただのテキストファイルなのに、なぜ正しい読み方で変換されるのでしょうか? たとえば「小田和正」を「ショウダワショウ」と変換されても不思議はないのですが。。。 オンラインで入力された顧客名に自動的にふりがなをつけるシステムに応用したいと考えています。もしどなたかこの関数の仕組みをご存じの方がいらっしゃいましたら、教えてください!

  • エクセルのPHONETIC関数について

    100件の住所録がアクセスで作ってエクセルに落としたため、通常の並べ替えができません。 ですのでこの関数を使って漢字のふりがなを振るのですが、全件ひとつずつ同じ作業をするのがたいへんです。1件この関数を使ったらあとは、どういう手順をふんだらいっぺんにふりがなをふれるのか教えてください。

  • EXCEL 関数を文字として

    EXCELで関数で計算や現れた文字を、実際の文字として扱うには どうしたらいいのでしょうか? 具体的にいいますと、PHONETICという関数でフリガナを表示したのですが、 それをフリガナとして他のEXCELのファイルにコピーして使いたいのです。 ただコピペすると、関数のため、出てきません…。 EXCEL初心者です。どうか教えてください。 宜しくお願いします。

  • エクセルのふりがな関数について

    既に入力してあるデータのふりがなを出したいのですが、phonetic関数を使ってももとある漢字のデータしか表示されません。”書式”の”ふりがな”の”編集”をクリックするとふりがなが表示されるようにはなるのですが、セル1つ1つに対してその操作をしないとふりがなの表示ができません。なんとか一括でふりがなの表示ができる方法はないでしょうか?ご教示ください。

  • エクセル関数 PHONETICについて

    関数 PHONETICでふりがなをふるとき、カタカナではなくてひらがなにする方法を教えてください。 自分なりにも調べたんですが、元セルを選択→書式→ふりがな→設定→ふりがなタブで種類をひらがなに変更というやり方でできるということらしいですが、これってウィンドウズXPくらいまでのやりかたですよね? 私のPCはウィンドウズ7で、書式のところを選択しても「ふりがな」という項目がないんです。 あるのは「行の高さや列幅の変更、シートの整理、セルの保護や非表示」だけなのですが、どうやったらいいか、分かる方お願いします!

  • エクセル関数 PHONETICについて

    エクセル関数について教えてください。 セルAに入れた会社名に セルBにふりがなをつけたいので セルBに  =PHONETIC(A1) といれます。 これで ちゃんとふりがながうたれるのですが 株式会社 太郎商事  有限会社 花子興業 など 株式会社や有限会社には ふりがなをつけたくありません。 (並べ替えをしたい為) 何か良い方法はありますか?

  • エクセルの関数で複数条件での抽出

    エクセルの関数を教えて欲しいです。 会員番号順に並んだ名簿を、別のシートへフリガナの「ア行」「カ行」「サ行」・・・・と フリガナ順で抽出をしたいのです。 下の図が関数でやりたいイメージです。 私自身、VBAは全く分からなく、関数なら初心者程度に分かりますので関数で 教えて下さい。 宜しくお願いします。

  • Excel2007 ふりがな関数について

    Excel2007 ふりがな関数について Phonetic関数を設定してふりがなを表示させようとしても 文字全体にふりがなが振られないことがあると聞きました。 同じセル内の文字なのに ふりがなが付いた部分と無い部分ができるなんて 信じられませんが・・・・・ 私はそのような現象に会ったことがありませんが 理由を知りたいのと 対処法を教えてください。 宜しくお願いいたします。

  • エクセル

    エクセルの関数PHONETICをつかうと、ふりがなが、カタカナで表示されますが、 ふりがなには表示できないのでしょか?

  • INDEX関数とふりがな表示

    INDEX関数とふりがな表示 Office2007を利用してます。Excelで一枚目のシートに名簿があります。名簿の名前欄にはふりがなが表示されています。(フォネティック関数ではなく、書式のふりがなの表示/非表示です。) 二枚目のシートにインデックス関数を用いて名簿の名前を引張ってきた場合、ふりがなが表示されません。 これは別のセルにフォネティック関数で表示させるようにするしか方法はないのでしょうか?