開発環境 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ボタンの動作の際は正常に終わります。
お解りになる方いらっしゃいますでしょうか・・・
すみません、追加です。
Call executeは行われていました。
行った先でXMLから起動するdllの名前(xxx.clsMain)取得し、それをString変数に代入している部分にてエラーが発生していることを確認しました。
dllはきちんと登録してあるのですが、うまくいきません。
どうかわかる方助けていただけると幸いです
On Error Resume Next
と書けばOK・・・とかそういう意味ではないですよね。
> 行った先でXMLから起動するdllの名前(xxx.clsMain)取得し、
> それをString変数に代入している部分にてエラーが発生していることを確認しました。
その部分のソースは無いのですか?
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を動かしています。
> オブジェクト変数またはWithブロック変数が設定されていません
> name = plgdata.Node("name").Item(1).Value
> ここのnameに代入する部分で落ちます。
という事は、
・plgdata が Nothing である。
・plgdata.Node("name") が Nothing である。
・plgdata.Node("name").Item(1) が Nothing である。
のいずれかでしょうね。
まずは、どのオブジェクトまでが取得できているのかを
調べて見てください。
魔界の仮面弁士様、夜遅くのレスありがとうございました。
見事にplgdataを取得していませんでした。
app.pathでXMLを取得しようとしていたため、EXEと同じ場所に設定XMLをおいていなかったことが原因でした。
初歩過ぎるミスでお恥ずかしいです。
z様、魔界の仮面弁士様、本当にありがとうございました。
おかげさまで先輩にどやされずに済みます(笑)
解決をチェックしてませんでした。
編集 削除