[リストへもどる]
一括表示

投稿時間:2002/08/16(Fri) 17:24
投稿者名:おみし
Eメール:smsinsin@yahoo.co.jp
URL :
タイトル:
エクセルを利用してフリガナを取得について
初めまして、こんにちは。
いろいろお世話になっています、おみし と申します。

「Excel & Word 関係」のサンプルに、
「エクセルを利用してフリガナを取得」というのがありますが、
以下のコードで同じ事が出来ます。

Private Sub Text1_Change()
    Text2.Text = ""
End Sub

Private Sub Text1_LostFocus()
    If Text1.Text <> "" Then
        Text2.Text = CreateObject("Excel.Application").GetPhonetic(Text1.Text)
        Text2.Text = StrConv(Text2.Text, vbHiragana)
    Else
        Text2.Text = ""
    End If
End Sub

基本的にやっていることは同じ事なんですけどね。

私のとこの動作環境は、Win98SE、VB6+SP5、EXCEL2000です。
Excel Object の参照設定はもちろん必要です。

ご参考まで。

投稿時間:2002/08/16(Fri) 19:53
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: エクセルを利用してフリガナを取得について
ありがとうございます。
こんな使い方が出来たんですね。初めて知りました。
これならコードがすっきりしますね。Excelの関数を利用するのにも使えそうだし

ただ、こちらもやはり 途中の空白(性と名の間)は対策しないとだめのようですね
これもなにかいい方法ありませんか?Excel単独でなら取得できるのですが

投稿時間:2002/08/20(Tue) 10:55
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
(関連質問)エクセルを利用して(空白対策)フリガナを取得について
上記の設定でふりがなを取得する場合、文字の間に空白が1個入ると下記のように
うまく変換されません。
花房春男  = はなふさはるお
花房 春男 = はなふさ
花房  春男 = はなぶさ  はるお     (半角2個の空白)
花 房 春 男 = はな ふさ はる おとこ  (半角1個の空白)
それで下記のようなコードを作成したのですが!
結構コードが長くなったし、他にいいアイデアがないか、お知恵を拝借したいと思い投稿しました。
Private Sub Text1_LostFocus()
    Dim MyName1 As String
    Dim MyName2 As String
    Dim MyName3 As String
    Dim MyName4 As String
    Dim i       As Long
    MyName1 = Text1.Text
    MyName1 = Replace(MyName1, " ", ":")
    MyName1 = Replace(MyName1, " ", ":")
    MyName2 = Replace(MyName1, ":", "")
    MyName2 = Replace(MyName2, ":", "")
    If Text1.Text <> "" Then
        MyName3 = CreateObject("Excel.Application").GetPhonetic(MyName2)
        MyName4 = CreateObject("Excel.Application").GetPhonetic(MyName1)
        MyName3 = StrConv(MyName3, vbHiragana)
        MyName4 = StrConv(MyName4, vbHiragana)
        For i = 1 To Len(MyName4)
            If Mid$(MyName4, i, 1) = ":" Then
                MyName3 = Left$(MyName3, i - 1) & " " & _
                            Right$(MyName3, Len(MyName3) - i + 1)
            End If
            If Mid$(MyName4, i, 1) = ":" Then
                MyName3 = Left$(MyName3, i - 1) & " " & _
                            Right$(MyName3, Len(MyName3) - i + 1)
            End If
        Next i
        Text2.Text = MyName3
    Else
        Text2.Text = ""
    End If
End Sub

投稿時間:2002/08/22(Thu) 11:03
投稿者名:おみし
Eメール:smsinsin@yahoo.co.jp
URL :
タイトル:
Re: (関連質問)エクセルを利用して(空白対策)
こんにちは、おみし です。遅い盆休みで間があいてしまいました。

前記のコードを貼り付けて動かしたら、私の環境(Win98SE、VB6+SP5、EXCEL2000)では
以下のように変換されます。

花房春男  = はなふさはるお
花房 春男 = はなぶさ はるお
花房  春男 = はなぶさ  はるお     (半角2個の空白)
花 房 春 男 = はな ふさ はる おとこ  (半角1個の空白)

また、別機のVB5+SP3で試しましたが、同じ結果でした。
姓と名の間の空白には対応できていると思います。
一文字ずつ空白で分けてしまうと、文字ごとに読みが出てしまうのはしょうがないですね。
当然といえば当然なので。
名前にフリガナをふるのに、完全に対応するのは不可能だと思います。
入力時にルールを決めるしかないのではないでしょうか。

結果の違いについておもうには、
コードではEXCELの関数を使用しているけど、実体は日本語FEPの機能に依存しているのだと思います。
多分そこに違いが出てくるのではないでしょうか。
ちなみに私のとこは、IME2000です。ATOK等、他のFEPがあれば検証できるのですが。

もうひとつ不思議?
通常はプロジェクトの参照設定で、EXCELのObjectLiblaryにチェックが必要と思っていたのですが、
何も参照しなくても、このコードは動きました。VB5でも。
この場合、参照設定は不要だったのでしょうか?????

解決にはなってませんね。感想みたいですいませんでした。

投稿時間:2002/08/22(Thu) 14:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: (関連質問)エクセルを利用して(空白対策)
返答、ありがとうございます。
どちみち読み方が違ったりと完璧なふりながは取得は難しいので
出来る範囲で取得するようにします。

> もうひとつ不思議?
> 通常はプロジェクトの参照設定で、EXCELのObjectLiblaryにチェックが必要と思っていたのですが、
> 何も参照しなくても、このコードは動きました。VB5でも。
> この場合、参照設定は不要だったのでしょうか?????

私も詳しくは知りませんが、Set ステートメントを使ってオブジェクトへの参照をしなければ
参照設定は 他の場合でも要らないようです。
ただ、Nothing 等の開放処理はどの場合必要で、どの場合は必要でないのかが今一理解していません
どなたか、詳しい方、ご教授願います。