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

投稿時間:2003/05/16(Fri) 05:45
投稿者名:おじん
URL :
タイトル:
オートメーションエラーって何でしょう?
MsimeTypeLibraryを使ってRichTextBoxに貼り付けた漢字混じりの文章の
任意の個所(文字列)をマウスでドラッグし、MouseUpしたところで
「ひらがな変換」し「文字列」と「読み」をひらっていくことをやりたい。
主要なソースは以下のとおりですが、この操作数回繰り返すと
自前の「エラー(on error goto〜)」にかかり、
「この機能を利用するにはMS_IME98が必要です。
オートメーションエラーです」とmsgされます。一度エラーになると以降は
「re_run(stop→test_run)」したのでは解決しません。vbを中断し
再度立ち上げないとだめです。
因みに、環境はwin98se、vb6(sp5)です。
よろしくお願いいたします。


Private Sub rtbBuffer_MouseUp( _
        Button As Integer, Shift As Integer, _
        X As Single, Y As Single)
'
    selPos = rtbBuffer.SelStart    '
    selLen = rtbBuffer.SelLength
    selTxt = rtbBuffer.SelText     '選択された文字
    txtYomi = ""
    If selTxt = "" Then Exit Sub   '空白文字
    If Len(selTxt) > 20 Then
        MsgBox "20文字以下を指定してください"
        Exit Sub
    End If
    Call VBCRLF_del '改行コード削除 自前サブ 非添付
    Call NonKanji_del '非漢字削除  自前サブ 非添付
    txtYomi = Phonetic(selTxt)    <<<=====問題のメイン
    rtbBuffer.SelColor = vbRed     '色を付ける
    stbMemo.Panels(3) = "ひらがな文字をセットしてください"
    cmdOK.Enabled = True
    
End Sub

Private Function Phonetic(pTxt) As String
'ふりかな取得
    Dim IME98 As New MSIMEJPN
    Dim MyIME As IFELanguage
    
    On Error GoTo ErrorTrap
'変換
    Set MyIME = IME98
    MyIME.Open
    Phonetic = MyIME.GetPhonetic(pTxt)
    MyIME.Close
    Set MyIME = Nothing
    Exit Function

ErrorTrap:
    Call MsgBox("この機能を利用するにはMS-IME98が必要です" _
            & vbCrLf & Err.Description, _
                vbExclamation)
    Set MyIME = Nothing

End Function

投稿時間:2003/05/16(Fri) 10:40
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: オートメーションエラーって何でしょう?
> 因みに、環境はwin98se、vb6(sp5)です。
今回の場合、MS-IMEのバージョンや、使用しているタイプライブラリに関する情報も必要かと。


> Dim IME98 As New MSIMEJPN

SDKを見る限り、MSIMEJPN に関する定義が見つからなかったので、
もしかしたら外しているかもしれませんが……恐らくこれは、
   HKEY_CLASSES_ROOT\CLSID\{AF9EE286-8CD3-445E-8842-433E5C460775}
   HKEY_CLASSES_ROOT\CLSID\{462C11AD-BBBE-43E3-9976-FA8E6B0DFF01}
   HKEY_CLASSES_ROOT\CLSID\{019F7150-E6DB-11D0-83C3-00C04FDDB82E}
のいずれを指している物と思われます。

そしてこれらには、バージョンの違いがあります。
例えば1番目は、MS-IME 8.1以上が必要であり、2番目は同8.0以上が必要です。

バージョンの問題という可能性もありますので、まずは、お使いのMS-IMEの
バージョンを確認してみてください。そして可能であれば、OLEVIEW.EXE等を用いて、
お使いのタイプライブラリ中の MSIMEJPN の定義を調べて見てください。


> Dim MyIME As IFELanguage
> Phonetic = MyIME.GetPhonetic(pTxt)

IFELanguage.GetPhonetic メソッドの引数定義は、
  string   As String (IN)  [漢字文字列]
  start    As Long   (IN)  [変換開始位置(先頭ならば1)]
  length   As Long   (IN)  [変換対象文字数(全指定なら-1)]
  phonetic As String (OUT) [変換結果の文字列]
だと思います。(正確には、BSTR, LONG, LONG, BSTR*ですが)

指定が string のみで、start, length が無いようですが、もしかして、
Optional start As Long = 1, Optional length = -1 のように定義された
タイプライブラリをお使いなのでしょうか?


> オートメーションエラーです」とmsgされます。

一緒に、「Hex(Err.Number)」 と「Err.Source」 も調べてみてください。

投稿時間:2003/05/16(Fri) 10:55
投稿者名:おじん
URL :
タイトル:
Re^2: オートメーションエラーって何でしょう?
早速のご返事、ありがとうございました。
使い方もいいかげんのようです。
今一度勉強しなおして、試みてみます。
3日ほど留守しますので、それからとなりますが、
まずはお礼まで。ありがとうございました。