ちょっと先の未来クイズ第4問

VB6のEXEファイルが通常実行すると正常に動作しますが、Windowsタスクスケジューラから実行すると「メモリ不足です」と表示され実行できません。
原因と解決方法を教えてください。

A 回答 (5件)

こうなると、もう環境に依存した話で、再現するのは難しそうですね。



思いつくものとしては

(1) 対象ファイルないし一時ファイル用フォルダを置いているドライブが、USBによる外付けHDDやその他のリムーバブルメディア上ということはないでしょうか。

(2) 対象ファイルないし一時ファイル用フォルダを置いているドライブが、LANによるネットワーク接続ドライブ上ということはないでしょうか。

こういった、起動してから認識を完了するまで時間のかかるドライブ上にファイルがあるようであれば、起動直後にプログラムを実行しても正常に動作しないことが予想されます。

このせいだとすれば、プログラムの最初で30秒とか1分とか(もしシステム側の事情が許せばもっと。とにかく充分な時間)停止しておいて、それから必要な動作をするようにしておけば、問題は解消します。

時間待ちの方法はいろいろ考えられますが、例えば

(1) 起動時の時刻(Time)を取得しておいて、現在のTimeとの差が必要な待ち時間になるまでDoEventsを繰り返す。

(2) 起動時に表示するFormにTimerを貼っておき、必要な待ち時間をIntervalに設定しておく。Timerイベントが発生したら、必要な動作に移る。

こんなところでしょうか。

この回答への補足

お世話になります。
待ち時間を300秒取ってEXEファイルを起動させましたが、うまくいきませんでした。今までと同じでスタンバイ状態から起動させるときのみTXTファイルが開けません。
以前使用していたパソコン(Windows98)で試したところ、問題なく起動しました。
どうしたもんでしょう?
OSを再インストールしたほうがよいでしょうか?

補足日時:2005/07/25 06:39
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2005/07/30 19:37

テキストファイルを1MBから10MBまで6種類用意して、同じプログラムをスタンバイ状態からタスクスケジューラで実行しましたが、どれもエラーは発生しませんでした。



要因は何か別のところにありそうです。

この回答への補足

お世話になります。
進捗状況を報告します。
100バイト程度のファイルも同様に開けませんでした。
またテストのためタスクスケジューラを数回起動させると、以下のような2つの変な現象が起こることが判明しました。
1.ログオン状態でも全くタスクスケジューラが起動しなくなる。
2.VBで作成したEXEファイルだけがごみ箱に捨てられなくなる。(「アクセスできません」と表示される。)
これらの現象は、OS(XP)を再起動させると解消される。

説明がうまくできなくて、すみません。
OS側の特別な設定が必要なんでしょうか?

補足日時:2005/07/21 15:56
    • good
    • 0

再度の確認ですが、その「単純にテキストファイルを開くだけのEXE」で開こうとしているテキストファイルのサイズはどのくらいでしょうか。



先の回答にありました4.78MBのファイルでしたら、それを小さなもの(数百バイトのもの)にした場合は動作するでしょうか。

※質問にもテクニックがあります。回答者が質問者の状況をいろいろ想像する必要がないように条件を整えることもその1つです。条件が限定されるほど回答しやすい=回答が得られやすいわけですから、質問者側で試せることがあるなら何でも一通り試してその結果を添えておくほうが効果的ですよ。
    • good
    • 0

うーん、詳細なコードなんて全く必要ないのですが。



1行もプログラムのない、フォームをただ表示するだけのプログラムをVBで作成して、そのEXEでも同じエラーになりますか? あるいは、EXEとしてメモ帳(notepad.exe)を使っても同じエラーになりますか?

同じエラーになるのであれば、エラーの原因はVBのプログラムとは関係ない可能性が高いわけです。そうなれば、回答者側でも同じ用具立てが用意できるわけですから、回答のために何か調査しようということもできるようになります。

また、エラーにならない(正常に実行される)のであれば、エラーの原因はVBのプログラム内にある可能性が高いわけです。そうであれば、改めて「プログラム自体に問題がある」と意識してプログラムの内容を調査すればよいということになります。

この回答への補足

お世話になります。

単純にテキストファイルを開くだけのEXEを作成し、試してみました。結果は同じでうまくいきませんでした。
Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Visible = True
xl.Application.Workbooks.OpenText FileName:="C:\test.txt"
これだけのプログラムです。

いろいろ調べましたが、よくわかりません。

補足日時:2005/07/16 15:00
    • good
    • 0

現象が発生するVBのプログラムの内容と、その現象を再現させるための手順を書いていただければ、回答者はとても楽ができるので、回答がとても得られやすくなるかと思います。

この回答への補足

お手数をおかけして申し訳ありません。

EXEファイルからxlsファイル(1.94MB)とtxtファイル(4.78MB)をエクセルで開き、データ処理をさせます。
ログオン状態でタスクスケジューラからEXEファイルを起動させた場合、問題なく実行されます。
スタンバイ状態でタスクスケジューラからEXEファイルを起動させると「メモリ不足です。完全に表示できません。」と表示(エクセルのエラー)され、txtファイルを開くことができません。(xlsファイルは開けます。)
詳細なコードは企業秘密のため表記できません。(ホント申し訳ありません。)
以上の事しか記せませんが、この問題は解決できるでしょうか?

補足日時:2005/07/11 18:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報