• ベストアンサー

実行時エラーについて

お世話になっています。教えて下さい。 VBで作ったプログラムです。 デバッグ時には何の問題もなく、実行可能(完全コンパイル後に実行)で、コンパイルも問題なく通りますが、EXEにして実行すると、以下のエラーが出ます。 実行時エラー:'91' object変数、またはwithブロック変数が設定されていません。 どなたか、原因に心当たりがある方、いらっしゃったら教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-MAKER
  • ベストアンサー率50% (15/30)
回答No.3

補足、早いですね。 問題の解決もこのまま進めば、時間の問題です。 shigeki-yyさんの補足の結果から判断すると、 SHELL周りが非常に怪しいです。 手元に資料がないので、(インターネットで探せば見つかるのですが、なまけものなのでお許しを)詳しいことは 書けませんが、確かWindows98とWindows2000では SHELLの呼び方が違ったと思います。 まずは、その辺を調べてみてはいかがでしょうか? 補足の内容からコントロール関係は、あまり影響していないような気がしました。 SHELL周りで問題がないときにコントロールを調べたほうがいいと思います。 では。

shigeki-yy
質問者

お礼

調べたところ、呼び出し方と言うよりShell関数を動かしているDLLが、win98とwin2000では違うみたいです。 いろいろ勉強になりました。 忙しい中、ありがとうございました。

shigeki-yy
質問者

補足

ありがとうございます。 SHELL関数について、Microsoftのホームページなどインターネットで調べてみたんですけど、Win98とWin2000での違いについての記述は見つかりませんでした。 shellで呼んでも、フォームの表示までは正常に動いているので、そこが原因ではないような気もしています。 もう少しコントロールと平行して調べてみます。

その他の回答 (3)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

>SHELL周りが非常に怪しいです。 SHELL関数の代わりにAPI関数のShellExecuteを使うとか もしかして、画面を沢山開いていますか?

shigeki-yy
質問者

お礼

ありがとうございます。 ShellExecute関数に変えたらうまくいきました。あれほどうまくいかなかったのに。 shell関数の仕様が違うのか、プロセスの扱いが2000と98で違うんですかね? ちなみに画面はそれほど開いていないです。前のプログラムが処理終了する寸前にパラメータを渡して起動しています。

  • D-MAKER
  • ベストアンサー率50% (15/30)
回答No.2

追加でお答えします。 補足で記載されていることから予想されることは、 shigeki-yyさんが作成されているEXEは Windows2000で作成されていて、そのEXEをWindows98 で、実行できないと読み取れるのですが正しいですか? 作成環境と試験環境がどのような関係になっているのかが ちょっと文面から読み取れないので、何ともいえませんが、下記の文章を参考にしていただけると幸いです。 コマンドボタンを押したときの先頭にMSGBOXを入れてもそこまでたどり着けないという現象からわかることはwithブロック変数が設定されていないという項目はないと思います。 ですからobject変数の宣言が怪しいか、後は環境の違いでしょう。 とりあえず全体に対してOption Explicit(つづりあってましたっけ?)を入れて、エラーをチェックしてみてください。 それでも引っかかるときは、フォームに張ってあるコンポーネントを疑ってみてください。 例えば、IEに関連するコントロールやOffice関係のコントロール、ライセンスが必要なコントロール張ったりしていませんか? その辺を疑ってみるといいと思います。 最後の手段で、Windows98で同じソースを使ってEXEを作成&デバッグすれば解決すると思います。 あまり回答にはなっていませんが、参考になればと思い書いて見ました。

shigeki-yy
質問者

補足

ありがとうございます。 おっしゃる通り、win2000でコンパイルしたEXEが98で動かないという事象です。(Win98でコンパイルしても同じ事象です。) 作成環境(Win2000)・実行環境(Win98SE)ともに同じバージョンのVisualStudio(V6.0SP5)がインストールされています。 OptionExplicitはデフォルトで入るようになっているので、その方面でのエラーはないようです。Win98でデバッグすると問題なく通ってしまうので、そこで原因も発見できませんでした。 もう少し、フォームに張り付いているコントロールの方を調べてみます。 あと、新たにわかったことは、別のVBからの呼び出し(SHELL関数)では同じ事象が起こりますが、単体(DOSコマンドラインから実行)だと動きます。呼び出しはSHELLで呼んでいるだけなので、そこに問題があるとも思えないのですが…。

  • D-MAKER
  • ベストアンサー率50% (15/30)
回答No.1

こんにちは。 質問内容から細かいことは何ともいえないのですが、 プログラミング&デバッグしたマシンとEXEを実行したマシンの環境が違うのではありませんか? この場合は、フォームに張ってあるコントロールや、実行に必要なファイルが不足している恐れがあります。 VBのバージョンとか張っているコントロールもしくはエラーの原因となりそうなオブジェクトの名前もあわせて質問すると回答者の方は的確なアドバイスをくれると思います。 実行時のエラーが出る場合は、エラーの原因となりそうなところにメッセージボックスを表示させ、どこまで処理が進んでいるか確認して、ソースを見直すことをお勧めします。これを繰り返していくと、だんだんエラーの原因となっているobject変数またはwithブロックにたどり着きます。この方法で、エラーの発生している行を突き止めましょう。

shigeki-yy
質問者

補足

指摘の通りです。大雑把な質問ですみません。 バージョンはVB6.0SP5です。 普通のコマンドボタンのクリックイベントでの処理なのですが、先頭にMSGBOXをかませても、その処理までたどり着きません。フォームなどは正常通りに表示され、機能しているんですけど、そのボタンを押した瞬間にフリーズして、Cntl-Alt-Deleteを押すと、上記のメッセージが表示されます。 そのプロシージャに書かれているソースを全部消しても同様になります。他に原因があるのかな…とも思うのですが。 ちなみに新しくわかったことですが、Windows2000では正常に動作し、エラーとなるのは、Windwos98です。

関連するQ&A

  • VBでの実行時エラー’429’について

    お世話になります。 PC環境はWindowsXP SP2です。 VB6.0のexeから.NETのDLLを利用する・・・というのをしているのですが、 3台のPCのうち、一台だけどうしても「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」というメッセージが出て異常終了になってしまいます。 この一台だけOSから再インストールし直しても動かず、困っています。 .NETのdllにデバッグ用のメッセージを組み込んでみたのですが、 メッセージが出ないので、どうやらDLLコール時にエラーとなっているようです。 Windows ScriptのVB Scriptを最新にしてみたり、 system32配下にdao360.dllがなかったので、追加してregsvr32コマンドにてレジストリ登録したりしたのですが、 どうも上手くいきません。 お忙しいところ恐れ入りますが、 何か思い当たる点などありましたらご教授願えませんでしょうか? よろしくお願いします。

  • VB6.0 exe作成時に実行時エラー429が出て困っています

    すみませんが、どなたか教えてください。 デバッグ環境にて納入先より持ち帰ったアプリケーションのexeを実行したところ、 実行時エラー 429 このコンポーネントのライセンス情報が見つかりません。 デザイン環境でこの機能を使うために必要なライセンスがありません。 といったメッセージが表示されてアプリケーションが動きません。 デバッグ環境でexeを再度作成し直そうとしても、コンパイル後の exe作成の時点で同様のエラーが出て終了してしまいます。 解決方法をご存知の方がいましたらよろしくお願い致します。

  • java実行時にエラーがでます。

    Java入門書を見て、簡単な文字「Hello!」を出力するプログラムを作りました。コンパイルはできたのですが、実行時エラー「Exception in thread "main"…」がでてしまいます。違うパソコン(Win-NT4.0)では問題無く実行されました。 私のノートパソコンでは、駄目です。環境変数等の設定も問題無いのですがなぜ?でしょうか・・・。よろしくお願い致します。

    • ベストアンサー
    • Java
  • 実行時エラー '8021'とはどんな内容のエラーでしょうか?

    VB6 でプログラムを作成していますが、たまに"実行時エラー'8021':DCB (Device Control Block)の取得時に、ポートで内部エラーが発生しました。"というメッセージが表示されプログラムが止まってしまいます。どういった内容のエラーなのか分かりませんので、しっている方がいらっしゃいましたら教えて頂きたいのですが。よろしくお願いします。

  • VB6.0 + Windows 2003環境下でのShell関数の使用

    現在、VB6.0を利用してプログラムを作成しています。 プログラム中からShell関数を利用してexeファイルを起動しようとしているのですが、exeファイルが起動しません。 実行環境OSがWindowsXPの場合は正常に起動するのですが、Windows2003で同じように実行したさい、exeファイルが起動しないのです。 イベントビューアのアプリケーションログを調べたところ、VBRuntimeエラーが発生していました。 エラー内容は、「実行時エラー'91'オブジェクト変数または With ブロック変数が設定されていません。」です。 VBRuntimeのバージョンは6.0.97.82です。 何か原因・解決策が分かる方いましたら ご協力お願いします。

  • VB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

    お世話になります。 環境はWindowsXPです。 現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。 以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。 (1).NETのDLLを作成 (2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録 (3)tlbexpコマンドで、タイプライブラリを作成 (4)VB6のプロジェクトから(3)を参照設定する (5)VB6から.NETクラスを生成し、呼び出す (6)プロジェクトをコンパイルし、exeを生成 この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という エラーメッセージが出てしまいます。 windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、 どうもダメみたいで困っています。 解決方法などご存知の方がいらっしゃいましたら、 ご教授いただけると大変助かります。 よろしくお願いいたします。

  • VB6.0 実行時エラー 374について

    スミマセンが、どなたか教えてください。 顧客先よりシステムのバックアップを持って戻り、 自分の事務所にて復元させようとしてバックアップファイルを展開しました。ソフトはVB6.0で作られているので一応、デバッグ環境にも VB6.0はインストールしました。 デバッグ環境にて現地のexeを実行したところ、 実行時エラー 374 コントロール'VB.UserControl'をアクティブ化できませんでした。 このコントロールにこのアプリケーションとの互換性がない可能性があります。 アプリケーションで提供されたバージョンのコントロールを使用しているかどうか確認して下さい。 上記のメッセージが表示されてアプリケーションが動きません。 この場合の解決方法をご存知の方がいらっしゃいましたら教えていただけませんか? よろしくお願い致します。

  • 実行時エラー '1004' の解決方法を教えて下さい。

    Excel 2003でデータ解析をしていますが、 実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです。 と出てしまい「デバッグ」をクリックすると、 ActiveSheet.Shapes("変数" & CStr(i)).Ungroup.Select の部分が黄色くマークされています。 パソコンに詳しくないのでどこをどのように修正すればエラーが出なくなりますでしょうか? ご存知の方、どうぞよろしくお願いいたします。

  • VB4.EXE で 実行時エラー '31037'

    WIN2000 で VB4.EXE を 動かそうとすると 実行時エラー '31037' ファイルの読み込み中にエラーが発生しました。 とエラーが出ます。 どうやらグリッド部分の読み込みで エラーが出てるみたいです。 VB6.EXE を 設定した人間が 環境を変えたらしく 今までのように最低限のDLL,OCXで 動かなくなりました。 VB4.EXE と VB6.EXE を 共存させるには どうすればいいでしょうか?

  • アクセスのエラー??

    前任者が作った個人的なアクセスシステムで、印刷ボタンを押すと「実行時エラー’2501’Open Reportアクションの実行はキャンセルされました。」Visual Basicコードでアクションを実行するDoCmdオブジェクトのメソッドを使おうとしましたが、表示されたダイアログボックスで(キャンセル)がクリックされました。たとえば、Closeメソッドを使って変更を行ったフォームを閉じる場合に、変更内容を保存するかどうかを確認するダイアログボックスで(キャンセル)がクリックされました。といったエラーが出て⇒デバッグするか終了の選択が出ます。何もキャンセルなどしてないのですが、どうすればいいでしょうか?ちなみに、終了して再度、印刷ボタンを押すと、実行時エラー91(オブジェクト変数またはWithブロック変数が設定されていません。)というのが、出ます(;_;)私はほとんどアクセスは、わかりません。どなたか詳しい方宜しくお願いします。

専門家に質問してみよう