• ベストアンサー

VB5 SP3、Spread2.5J環境で実行時エラー

OS:WinXP PRO SP2、WinNT SP6 他 VB:5.0 SP3 SPREAD:2.5J (1998/07/25) 上記環境で作成したプログラムがあります。 プロジェクトの構成は、検索画面、メイン画面、コード検索用子画面と いった画面があり、それぞれにスプレッドを使用しています。 メイン画面のスプレッドは、行が取引先、列が商品のマトリックスに なっていて、検索したデータによって、コンボボックス型や、 チェックボックス型のセルが作られ、背景色もセル毎に変更されます。 複雑な請求書のプログラムですので、EXEのサイズや、メモリ使用量などは、 結構なものなのですが、最近までは問題なく動作していました。 その状態から、取引先毎に小計行を追加したり、実績数が未入力の行を 非表示にするコンボボックスを追加する仕様変更を行い、普通に使う分には 問題なく動作しています。 しかし、3,500行程度のデータを表示して、下の方の取引先の実績数を 入力後、実績数未入力のデータを非表示にした場合、下記の3つのエラーが エラートラップに関係無く表示され、VB(or EXE)が終了することがあります。 同じ処理をしても、現象が出る時と出ない時があります。 1.実行時エラー '-2147417848(80010108)' 'Action'メソッドは失敗しました:'_DSpreadSheet'オブジェクト (※ReDrawの場合もあり) 2.問題が発生したため、Visual Basicを終了します。 3.vb5.exe-アプリケーションエラー "0x76992d36"の命令が"0xf3011ad6"のメモリを参照しました。 メモリが"read"になることはできませんでした。 GrapeCity社のサイトや、他のHPでも検索したのですが、同様の現象が 見当たらず、メモリ使用を極力抑えたロジックに変更してみたりも したのですが、全く状況が変わらず困窮しております。 OSをインストールし直しても同じです。 同様の現象が出た方はいらっしゃいますでしょうか? また、対処方法を御存知の方がいらっしゃいましたら、御教えください。 よろしくお願い致します。

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

#解決方法ではありません。 > 1.実行時エラー '-2147417848(80010108)' > 'Action'メソッドは失敗しました:'_DSpreadSheet'オブジェクト > (※ReDrawの場合もあり) で発生すると言うことは、SPREAD 2.5Jを操作した時に発生するんですよね? #SPREADの外で、直接APIを使用しているわけじゃないんですよね? ちなみに、実行してている「Action」は何なんでしょうか? #ひょっとして印刷とか? だとすると、 > 3.vb5.exe-アプリケーションエラー は、どうしようも無いと思いますよ。 多分、SPREAD自身が原因で、SPREADを直さないと駄目なんでしょうけど、 バージョン2.5Jのサポートは、何年も前に終わってますからね。 > GrapeCity社のサイトや、他のHPでも検索したのですが、同様の現象が > 見当たらず、メモリ使用を極力抑えたロジックに変更してみたりも > したのですが、全く状況が変わらず困窮しております。 その機能は使用しない様にするか、 SPREADのバージョンアップを検討した方が良いと思いますけど・・・ ちなみに私は昔、 VB6+SPREAD2.5Jで作成し、WinNT4で問題なく動作してきたプログラムが、 OSをWin2000に変更したら、特定プリンタに対する印刷で アプリケーションエラー発生するようになった事があります。 何ヶ月(掛かりきりってわけじゃないですけど)か調査や プログラムの手直しをやっても対処できなかったため、 結局、SPREADの印刷機能を使用するのはあきらめて、 Lineメソッド等で、SPREADそっくりに印刷するように修正しました。

ji_ji_jii
質問者

お礼

回答ありがとうございます。 > で発生すると言うことは、SPREAD 2.5Jを操作した時に発生するんですよね? > #SPREADの外で、直接APIを使用しているわけじゃないんですよね? そうですね。 コンボボックスの値が変更されたら、スプレッドから該当する行を非表示に するユーザー関数を呼び出していて、その関数内ではAPIは操作しておりません。 > ちなみに、実行してている「Action」は何なんでしょうか? > #ひょっとして印刷とか? 印刷ではないですね。 当方では、印刷は VsView などを使ったり、Excelで出力したりしています。 Actionで行っている処理は、SS_ACTION_ACTIVE_CELLで、セルを選択するコマンドです。 しかし、質問の部分に記入したように、ReDraw や、RowHidden の場合もあり、 処理が安定していません。 ただ、処理は違えども、この現象も dsuekichi様と同じような感じがするので、 普通に調査や改修を繰り返しても、時間だけが過ぎて解決までは至らないかも しれません・・・。 しかし、請求書ですので、あまり躊躇もしてられませんので、当方としても、 機能縮小や、Spreadのバージョンアップを念頭に入れて、もう少し頑張ってみます。 ありがとうございました。

その他の回答 (1)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.1

典型的な領域侵害だと思います。 参照不可の領域に書き込もうとすると問答無用でVBはおちます。 当然メモリはreadになることができませんです。 bitbltやcopymemoryなどの転送命令を中心に調べてみて下さい。 当方でも昨日同じ現象が発生しましたが、 型宣言のミスでアドレスが想定外のものが渡っていたのが原因でした。

ji_ji_jii
質問者

お礼

回答ありがとうございます。 bitbltやcopymemoryは、WindowsAPIの関数のことでしょうか? あいにく、当方は恥ずかしながら、WindowsAPIの知識に乏しく、 メモリのアドレスを調べることすらままなりません。 Spreadを使ったcopymemoryの簡単なサンプルソースがあれば、 大変助かるのですが、こちらで調べるようにします。 ただ、ソースコードが古く、型が不一致でVBにお任せしてる部分も 多々あり、もしかしたら、gungnir7様と同じような理由かも しれませんので、型を合わせて、文字列も固定長にする等、 型宣言の部分を調査してからにしようと思います。 ありがとうございました。

関連するQ&A

  • スプレッドのヘッダとコンボボックスについて

    2点不明点がありますのでよろしくお願いします。 【1】スプレッドのヘッダ  スプレッドのヘッダを列・行とも表示する時  _____________  | あ |  い |  う  |   |-----|------|----------|     | え |    |     |  |-----|------|----------|  | お |    |     |  |-----|------|----------|   「い・う」 には設定できますが   「あ」に設定できますか? 【2】コンボボックスの連結 スプレッドの1つの行をコンボボックスにしたいのですが 上表で例えると 「お」の行をコンボボックスにする。 しかし、画面を実行するとコンボボックスが押下されません。 コンボボックスを連結するにはどのようにしたらよいのでしょうか?

  • VB6.0 プロジェクトオープン時のエラーについて

    色々と調べてみたのですが、私の実力では原因も解決策もわからなかったので質問させていただきます。 やりたいこと WindowsNTにて開発していたVB6(SPなし?もしくはSP4くらい。)アプリケーションを、WindowsXPのVB6(SP5)のマシンで開きたい。 現象 WindowsXPで開こうとすると、エラーが表示され、プロジェクトのあるフォルダに以下のログが出力される。 行 195: クラス ○○○○.ExploreBar(コントロール exbWs) はロードされていません。 行 212: クラス ○○○○.FlatButton(コントロール btnClose) はロードされていません。 行 202: プロパティ名 _ExtentX(exbWs) が不正です。 行 203: プロパティ名 _ExtentY(exbWs) が不正です。 行 218: プロパティ名 _ExtentX(btnClose) が不正です。 行 219: プロパティ名 _ExtentY(btnClose) が不正です。 ためしに、Windows2000のVB6(SP5)で開くと、何もエラーが出ることなく、正常に開くことが出来ました。 もう何がなにやら・・・。 調べてみたところ、コントロールの参照が巧くいってないみたいです。 (エラーを出しているfrmファイルを開いて確認しようとすると、エラーになっている箇所がピクチャーボックスになっていた。) そこで、参照設定やコンポーネントの設定を確認してみたのですが、どうもNTとXPでは一致しているみたいです。(同じ場所にチェックが入っている。) もしかして調べる観点からしてズレているのでしょうか。 原因と解決方法をどうか教えていただきたく・・・。 お力添えのほど、よろしくお願いします。<(_ _*)>

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

    現在サーバのリプレースをおこなっております。 旧サーバ:Win NT Server 4.0 SP6 新サーバ:Win 2003 Server 旧サーバで稼動していたVBのexeを新サーバで動かそうとすると 「424 オブジェクトが必要です」というエラーになります。 exeはVB5.0で作成されたものです。 PG内でDAOを使ってOracleへ接続おり、その辺りが怪しいのかなと思うのですが、解決できず困っています。 同じような経験をされた方、DAO接続についてご存知の方、なにか情報ありましたらご教授いただけないでしょうか。

  • 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コマンドにてレジストリ登録したりしたのですが、 どうも上手くいきません。 お忙しいところ恐れ入りますが、 何か思い当たる点などありましたらご教授願えませんでしょうか? よろしくお願いします。

  • VB 実行時エラー '3001'

    VB6.0(SP5)で開発していて、エラーが発生して困っております。 今まで使っていたプログラムにちょっとバグ改修をして、新しいバージョンのプログラムを配布したら、Win98マシンで何台か、次のエラーが出ました。 「実行時エラー'3001': 間違った種類または許容範囲外の引数を使用しているか、使用している引数が競合しています。」 プログラムは、「ログイン画面を表示し、IDとパスワードを入力し、DBに登録されているID&パスワードだったら実行」という処理をしています。DBはMySQLです。 エラーが出るマシンでは、このログイン画面(VBForm)が出る前に上記エラーを表示して、終了してしまいます。 ログイン画面を表示するまでの処理としては、 ・.iniファイルから各種パラメータを読み込んで変数にセット ・DBへの接続の文字列を作成する ・AdoConnectSetを実行 ・Formの各種プロパティを設定 ・FormのShowを実行 このような感じです。 そしてさらによくわからないのが、上記手順の合間合間に、MsgBox関数で「○○が終わった」などと、進行状況を表示する処理を追加すると、エラーが発生することなく、ログイン画面の表示までたどり着けるのです。 開発機はWin2000マシンですが、実行しているのはWin95,98,2000などいろいろで、上記のエラーが出るのは98マシンです。 (98マシンでちゃんと動作するのもあります) ズバリの解決法、情報へのポインタ、アドバイス、ヒント... を求めております。よろしくお願いいたします。

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

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

  • VB5.0 で実行時エラーがでる

    VB5.0でDBGRIDを呼び出し、戻ってきてからメッセージボックスを表示しようとすると、「実行時エラー5 プロシージャの呼び出し、または引数が不正です」が出ます。それもEXEから実行する時だけです。 OSはXPです。 以下のプログラムで、メッセージボックスを表示しなかったら実行時エラーはでません。 F_SelKokyak.Show vbModal If Wk_Modoru = 0 Then   Set RecUri = MAINdb.OpenRecordset("Select * " & _ " From FT_Uriage " & _ " Where Uri_MiseCode = " & Wk_MiseCode & _ " And Uri_KaisKbn = " & 1 & _ " And Uri_KyakCode = " & Sel_KyakCode & _ " And Uri_UriSbt = " & 0 & _ " And Uri_UriKakKin <> 0" & _ " Order By Uri_UriNo; ") If RecUri.RecordCount = 0 Then RecUri.Close Set RecUri = Nothing If Wk_KaisKbn = 2 Then MsgBox "売掛金はありません。", vbCritical, "入力エラー" F_EigMainInp!txtKyakName2.SetFocus Exit Sub End If End If

  • VBのsstab(MicroSoft Tabbed Dialog Control(SP6))について

    VB6.0(SP6)で開発を行っております。 タブを使用している画面をロードする時に何らかのエラーが起きた場合、エラーメッセージを表示させてシステムをendで終了させたいのですが、エラーメッセージがでた後に画面がフリーズして残ってしまいます。vbpで実行すると正常にシステムを終了するのですが、exeを作って実行するとフリーズするという現象が起こります。 画面は残るのですがボタン等を押しても何も起こりません。フリーズの現象がでるのは、 1.フォームロード中にエラーが起きた場合 2.タブ上にラベルやテキストのオブジェクトがある場合   (タブ上に何もないときは正常に終了します) です。どうしたら正常に終了させられるか何かご存知の方いらっしゃいましたらアドバイスお願いします。

  • vb6.exe - アプリケーションエラー

    VBで作成したEXEを終了させた時、プロジェクトからプログラムを実行して、 プロジェクトを終了させた時に、下記エラーが発生します。 (プロジェクトを開いて閉じるだけではエラーは発生しない。) -------------------------------------------------------- "0x7c950a19"の命令が"0xffffffff"のメモリを参照しました。 メモリが"read"になることはできませんでした。 -------------------------------------------------------- 自分のPCで実行した時のみ発生します。 (他のPCで実行してもエラーは発生しません。) 何かわかる方がいらっしゃいましたらアドバイス頂けたらと思います。 宜しくお願い致します。 <環境> XP SP3 メモリ4G VB6.0 SP6

  • 既にVBアプリが入っているPCでの自作VBアプリの実行でエラー

    お世話になります。 なんとかVBでEXEまで作成しました。 自分のPCでは実行できたのですが、 他のPCではエラーになります。 MSFLXGRD.OCXがない・・・みたいなエラーです。 エラーになったPCには既にVBのアプリケーションが インストールされていて、必要なランタイムは 多分そろっていると思います。 検索したらMSFLXGRD.OCXは見つかりました。 これってバージョンの問題ですか?? フリーで色々あるランタイムパッケージなどを ダウンロードした方がいいですか? 既存のAPが動かなくなると困るので、 あんまりしたくないんですが。 VB6.0でOSはどれも2000です。 よろしくお願いいたします。

専門家に質問してみよう