web-dev-qa-db-ja.com

「オブジェクト「〜」のメソッド「〜」が失敗した」とはどういう意味ですか?

デスクトップでレガシーVB6アプリケーションを実行しようとしています(ユーザーインターフェイスがなく、コマンドラインアプリです)。実行すると、次のメッセージボックスが表示されます。

Run-time error '4099':

Method '~' of object '~' failed

これは私には何の意味もありません。誰が何が間違っているのか知っていますか?

29
Cyberherbalist

これは、サポートライブラリ(dllまたはocx)が正しく登録されていない場合、またはインストールされたライブラリのバージョンが、アプリが最初にコンパイルされたバージョンと異なる(および互換性がない)場合に発生します。

すべての依存ライブラリが登録され、適切なバージョンであることを確認してください。

サポートライブラリの新しいバージョンで動作させるには、アプリを再コンパイルする必要があります。

17
DJ.

このメッセージは、Visual Basic 6アプリケーションが例外をスローする(つまり、失敗HRESULTを返す)COMインターフェイス呼び出しを行うときに発生します。この場合、VB6は例外ハンドラーにジャンプします(On Error)。例外ハンドラーには、例外の詳細を含むオブジェクトErrが表示されます。

オブジェクトがISupportErrorInfoを実装し、実際にエラー情報をサポートし、エラー情報を設定した場合、Err.Descriptionは、オブジェクトによって設定されたエラー情報にある文字列を取ります。さもないと、 Err.Descriptionは文字列Method ~ of ~ failed

IDKは、VBの他のバージョンが同じことをするかどうか、または、メッセージが今説明したシナリオ以外の他のシナリオでも設定されているかどうか。

9
M.M

別の原因として、自動化を使用している場合、Officeのマイナーバージョンの不一致があります。

一部のシステムで正常に動作し、他のシステムでエラーが発生したレガシーVB5 + Accessアプリ(Delphiで書き直し、すべての自動化混乱をクリーンなOpenDocument生成に置き換えている最中)があります。

このエラーは、Excelスプレッドシートを生成するときに発生し、無害なように見えました(迷惑を除いて、ユーザーが中央で[中止]をクリックするリスクが何十倍も表示されるため)。

最終的には、Office 97のインストール方法が原因であることがわかりました。

Office 97セットアップシーケンスが次の場合、エラーが表示されます。

  • Office 97 SR0インストールCD
  • sR1パッチを適用する
  • sR2パッチを適用する

ただし、以下でインストールされた場合はそうではありません。

  • Office 97 SR1インストールCD
  • sR2パッチを適用する

影響を受けるシステムでSR1セットアップでアンインストール/再インストールを行うと、問題が解決しました。

3
Julien Marodon

VB6 SP6があり、この動作を再現できます。新しいプロジェクトでは、このコードをフォームに入れます。プロジェクトはF5で正常に実行されます。プロジェクトを右クリックして、「公開」、「出力の構築」の順に選択します。これにより、エラーメッセージが生成されます。

Option Explicit

Public Sub Init()
    Dim blnErrorHandling As Boolean

    If False Then
        blnErrorHandling = True
    Else
        blnErrorHandling = False
End Sub

最後の4行をコメントアウトします。

Option Explicit

Public Sub Init()
    Dim blnErrorHandling As Boolean

'    If False Then
'        blnErrorHandling = True
'    Else
'        blnErrorHandling = False
End Sub

エラーは発生せず、出力は正常に構築されます。私はすぐにいくつかのエラー処理を追加して、クラッシュとIf False Thenは完全に有効です。 MDACチェッカーは、すべてが正常であり、再起動しても問題が解決しないと述べました。

2
Brian Leeming

私の経験によると、これはMicrosoft Accessバージョンによるものです。

私のプログラムはMS Office 2007で作成され、MS Officeの新しいバージョンをインストールしました。そのため、このエラーが表示されます。

0
Sajjad

コマンドラインアプリケーションとして実行されるVB6プログラムの場合、コンパイル後に追加のステージが必要です。VB6リンカーを実行可能ファイルで実行して、コンソールプログラムとして設定する必要があります。

<VB6 dir>\LINK.EXE  /EDIT  /SUBSYSTEM:CONSOLE  <program>.exe

これに失敗すると、Method '~' of object '~' failedプログラム実行時のエラー。

0
yttyx