EXEでの実行時エラーを回避するには?

解決


VBがんばります  2004-07-22 20:09:50  No: 84726  IP: [192.*.*.*]

開発環境  Win2000  VB6.0 Sp5

お世話になっております。よくわからないエラーが出てしまい
回避する方法を探しているのですが、まだ見つからないため書き込みさせていただきます。

VB上のFormより、F5ボタンを押すとformないのexecuteメソッドを呼び出し
CreateObjectを行い帳票を印刷するというプログラムを作っています。

vbpファイルをデバッグで動かす分には正常に動作することは確認しているのですが、そのファイルをEXEにしてEXEで動かすと"実行時エラー91オブジェクト変数またはWithブロック変数が設定されていません"というエラーが出てしまいます。

エラー個所は特定できているのですが、なぜそうなるのかがわかりません。どなたかわかる方がいらっしゃいましたらご教授をお願いします。

-------------エラー該当ソースです-------------------------
Private Sub Fkey1_FKeyPress(ByVal KeyIndex As Integer, ByVal ShiftState As FunctionKeyCtl.fkShiftStateConst, Handled As Boolean)
    Select Case KeyIndex
    Case 5      '印刷処理を開始する
        Call execute
    Case 9      '画面を閉じる
        m_conn.Close
        Unload Me
    End Select
End Sub

call executeの部分でエラーが起こるのを確認しております。なぜかF9ボタンの動作の際は正常に終わります。
お解りになる方いらっしゃいますでしょうか・・・

編集 削除
VBがんばります  2004-07-22 20:40:51  No: 84727  IP: [192.*.*.*]

すみません、追加です。

Call executeは行われていました。
行った先でXMLから起動するdllの名前(xxx.clsMain)取得し、それをString変数に代入している部分にてエラーが発生していることを確認しました。

dllはきちんと登録してあるのですが、うまくいきません。
どうかわかる方助けていただけると幸いです

編集 削除
 2004-07-22 20:45:46  No: 84728  IP: [192.*.*.*]

On Error Resume Next
と書けばOK・・・とかそういう意味ではないですよね。

> 行った先でXMLから起動するdllの名前(xxx.clsMain)取得し、
> それをString変数に代入している部分にてエラーが発生していることを確認しました。

その部分のソースは無いのですか?

編集 削除
VBがんばってます  2004-07-22 20:57:46  No: 84729  IP: [192.*.*.*]

z様、即レスありがとうございます。
On Error Resumeは使えないです。エラーをキャッチする必要はなくちゃんと動いてくれるだけで、いいのですが・・・
該当ソースですが、下記になります。

For i = 1 To x_Plglist.Count
        Set data = x_Plglist.Item(i)
        If data.Attr("olcd") = Me.imOlcd And data.Attr("prcdiv") = Me.imPrc And _
        data.Attr("no") = Me.imNum Then
            Set plgdata = data
            Exit For
        End If
    Next
name = plgdata.Node("name").Item(1).Value

ここのnameに代入する部分で落ちます。
やっていることは、ループ処理の中で画面より入力された値とマッチするものの
タグをXMLより取得する処理を行っています。
デバッグモードで正常動作するものと同じデータを使ってEXEを動かしています。

編集 削除
魔界の仮面弁士  2004-07-22 23:05:42  No: 84730  IP: [192.*.*.*]

> オブジェクト変数またはWithブロック変数が設定されていません

> name = plgdata.Node("name").Item(1).Value
> ここのnameに代入する部分で落ちます。

という事は、

・plgdata が Nothing である。
・plgdata.Node("name") が Nothing である。
・plgdata.Node("name").Item(1)  が Nothing である。

のいずれかでしょうね。

まずは、どのオブジェクトまでが取得できているのかを
調べて見てください。

編集 削除
VBがんばります  2004-07-23 09:11:36  No: 84731  IP: [192.*.*.*]

魔界の仮面弁士様、夜遅くのレスありがとうございました。
見事にplgdataを取得していませんでした。

app.pathでXMLを取得しようとしていたため、EXEと同じ場所に設定XMLをおいていなかったことが原因でした。
初歩過ぎるミスでお恥ずかしいです。

z様、魔界の仮面弁士様、本当にありがとうございました。
おかげさまで先輩にどやされずに済みます(笑)

編集 削除
VBがんばります  2004-07-23 09:11:59  No: 84732  IP: [192.*.*.*]

解決をチェックしてませんでした。

編集 削除