• ベストアンサー

VB6 Dir関数で52エラー発生

いつもお世話になっています。 最近になって、VB6のDir関数を実行するとき、実行時エラー52が発生します。 既存のプログラムに、メール送信機能を追加しました。 このとき、BASP21をインストールしました。 これ以外のプログラムのインストールはWindowsUpdate以外はかかっていません。 皆さん、このような現象は体験されていますでしょうか? 解決策をご存知の方、ご教授願います。 BASP21が悪いのかと思い、アンインストールしましたが、現象は再現します。 VB6の再インストールをしましたが、再現します。 以上よろしくお願いします。

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

  • ベストアンサー
  • Masu-Chin
  • ベストアンサー率100% (1/1)
回答No.3

私も先週末、全く同じ内容 = Dir 関数で 52 エラーが、立て続けに 2 件出て、焦りまくった者です。 自分のところの場合、Dir 関数をフォルダ or ファイルの存在チェックに 用いていたのですが… 引数にネットワーク越しのパス = \\+コンピュータ名 or IP アドレスから 始まる文字列を指定すると、場合によって、エラーになりました。 通常、Dir 関数は、引数で渡したフォルダ or ファイルが存在しないと 空白を戻しますが… 引数に、ネットワーク越しの共有フォルダ or ファイルを指定すると アクセス可能な状態である場合は良いのですが、そうではない場合、 52 エラーになるようです。 また、ローカルのパスでも、パスとして無効な文字列だと、これまた 場合によって、52 エラーになる場合があります。(ただ、ならない場合も あるんですよね~) C:: ⇒ 52 エラー C\\ ⇒ 正常(空白を戻す) FileSystemObject の FileExists、FolderExists メソッドだと、 上記のようなことはないので、現在、置き換え中です。 nobupapa さんの状況には当てはまらないかもしれませんが、 一例まで。(-_-)b

nobupapa
質問者

お礼

こんにちは 回答ありがとうございます。 同じロジックを、別のPC(同一ハブの隣のPC)で試したところ、エラーが出ませんでした。 Masu-Chinさんの指摘された、ネットワーク越しが引っかかりますね ケーブル変えてみようかな? やはり、PC固有の問題でしょうか? もう一度、VBをインストールしてみようかと考えています。 ちょっと、先になりますが。 結果がでたら、報告します。

その他の回答 (2)

  • isomaru
  • ベストアンサー率33% (1/3)
回答No.2

はじめまして コードを拝見しましたがc_sINIPATHはディレクトリではないでしょうか? その有無を見るのなら If Dir(App.Path & "\c_sINIPATH, vbDirectory) = "" Then というようにすればいいと思います、 Dir関数の初期値は0:通常ファイルなので、 ファイルの有無を見るのであれば、ファイル名まで記述してください。

nobupapa
質問者

お礼

はじめまして 回答ありがとうございます。 じつは、別件、至急案件があり、まだANo.2さんの処理を試していません。 結果が出次第、ご報告させてもらいます。

回答No.1

実行時エラー52 の内容は、 「ファイル名またはファイル番号が不正です。」 なので、 ファイル番号を、FreeFile関数を使わずに固定にしていませんか?

nobupapa
質問者

お礼

ご回答ありがとうございます。 表題のとおりDir関数でエラーが発生しています。 コードは以下のとおりです。 If Dir(App.Path & "\" & c_sINIPATH) = "" Then Exit Function End If c_sINIPATHにはファイル名が格納されています。

関連するQ&A

  • VB2006のアンインストールがうまくいかない

    ウィルスバスター2007にアップグレードしたいと思い、 まず2006の方を 「プログラム>ウィルスバスター2006>アンインストール」 でアンインストール手順をふみました。 しかし、2007を入れようとすると、 「すでに他の製品がインストールされています。セットアップを続行するには、コンピュータを再起動する必要があります。再起動してもよろしいですか?コンピュータを再起動するには「はい」を、後で再起動する場合は「いいえ」をクリックしてください。「いいえ」をクリックすると、セットアップは中断されます。再起動後には自動的にセットアップが実行されます。」 というメッセージが現れ、再起動しても毎回このメッセージが現れます。 そこで、VB2006のフォルダを見ると、アンインストールは完了していないようなのですが、もう一度 「プログラム>ウィルスバスター2006>アンインストール」 を実行しようとすると 「この操作はすでに存在インストールされている製品に対してのみ有効です」 と表示されます。 つまり、 「VB2006をアンインストールをしないとVB2007をインストールできないのに、それができない」という状態で止まっています。 どのようにすれば、アンインストールが完了するでしょうか?

  • VBがデバッグ時落ちてしまう

    VC6.0でDLLを作成し、VB6.0で呼び出すプログラムを作成しています。 DLLの内容はWindowハンドルを引数にしてそのハンドルを持つWindow上にListboxを作成するというようなものです。(もともとC言語用のDLLだったものをVBで使いまわしています) このプログラムをデバッグ実行し、デバッガ上で停止[実行->終了]とすると、VB6.exeがアプリケーションエラーで落ちてしまいます。(DLLの関数を呼ばない限り大丈夫です) デバッグ実行でも普通に終了(アプリケーションでの終了)であれば正常に終了してくれます。 このままですと、実行時エラーで止まる度にVB6.exeが落ちてしまい非常に不便です。 このような現象で困った方いませんか? 解決策がありましたら教えてください。

  • BASP21送信エラーVB.NET

    環境 VB.NET(2003)+BASP21(フリー版)+Windows2003Server+SQLSERVER2000 処理内容 1.DBよりデータを抽出しテキストファイルを作成 2.テキストファイルを添付しBASP21のsendmail(ログモード)にて送信  SMTPはSSL認証ではありません 上記プログラムをWindowsのタスクにて毎朝7:30に実行  現在タスク登録時のユーザーはパスワード付でAdmin権限を与えてあります。Windowsはログオフ状態です。  朝7:30頃にサーバーで起動しているプログラムはありませんので高負荷の状態ではありません。 7割がた正常終了するのですが下記MSGにて送信エラーが発生しています。 送信エラー時に即効でログインし手動でプログラムを実行すると正常終了します。(以下LOGファイルより) failed 530 authentication required for relay (#5.7.1) from XXXXXXX ログオン状態+スクリンセーバーOFFの状態でも実験してみたのですがエラー発生する場合があります。

  • VB6.0⇒VB2008のコンバートについて

    ある端末でVB6.0のプログラムをVB2008へコンバートしました。 その後、別のVB6.0がインストールされていない端末でプログラムを実行しようとしたところ、"COMExceptionはハンドルされませんでした。"とエラーが発生しました。 上記のコンバートしたプログラムではソケット通信でwinsockを利用していました。 そのためプログラムを修正して、winsockを利用しないようにしたところ、エラーがなく実行できました。 おそらく、VB6.0がインストールされていない事が原因だと思うのですが、いまいちわかりません。 どなたかご教授お願いします。

  • VBからPC-ANYWHEREの実行

    どなたかご存知の方いらっしゃいましたら教えて下さい。 VISUAL BASICからSYMANTECのPC-ANYWHEREを実行するにはどうしたら良いのでしょうか。 具体的にやりたいこととしては、 (1)VBからリモートオブジェクトを作成し、既存のホストに接続 (2)リモート側からホスト側へ指定したフォルダにテキストファイルを送信 (3)送信完了後、ホストにインストール済みのプログラムを実行し、処理を行う。 (4)ホスト側のプログラムからは処理成否のログデータが吐き出されるので、それをリモート端末にコピー。 (5)接続を切る。 以上のようなことです。 ちなみにPC-ANYWHEREのバージョンは10.0、VBは5.0SP3です。 よろしくお願い致します。

  • VBでのエラー

    VB6、OS WindowsXpの環境でプログラムを作成しています。 Set mDb = OpenDatabase(".\Mail.xls", False, False, strConnectionString) のところで、 「実行時エラー3170 インストール可能なISAMドライバが見つかりませんでした。」 と言うエラーがでます。 原因がわかりません。

  • VB.netのISDATE関数について

    お世話になります。 [環境] VS2005 VB.net VB.netのISDATE関数を使い日付のチェックをしています。 端末により結果が違っていて困っています。 端末A:ISDATE(昭和50/10/01)・・・True 端末B:ISDATE(昭和50/10/01)・・・False インターネットで調べるISDATE関数は環境により結果が違う為、 ISDATE関数は使用するなと書かれていました。 環境とはどのような環境なのでしょうか? 今後はISDATE関数は使わないようにしようと思いますが、 たちまちは既存プログラムが正常に動かすようにしたいと思っております。 どなたか設定で回避できる方法をご存じの方がいらっしゃいましたら ご教授いただければと思います。

  • Windows7にvb6をインストールしようとすると、「このプログラム

    Windows7にvb6をインストールしようとすると、「このプログラムには既知の互換性の問題があります」と表示されます。 【オンラインで解決策の有無を確認する】ボタンがあるので、それを押すと「Visual Studioの解決策が見つかりません」のメッセージが表示されます。 このプログラム互換性アシスタント画面には、【プログラムを実行する】ボタンもあるので、メッセージ表示を無視してインストールを実行してしまっていいものなのでしょうか?

  • VB6.0から起動したexeファイルを終了するとエラーが発生して困っています

    VB6.0(OSはWindowsXP)中からShell関数を利用してexeファイルを起動したのですが、そのexeファイルを終了すると決まってアプリケーションエラーが発生します。これを直接かショートカットで実行して終了するとエラーは出ません。どなたか考えられる原因や解決策をご存じの方、教えて頂けませんでしょうか?よろしくお願い致します。

  • VB6.0で実行の度に異なるエラー

    VB6.0,Windows2000で作成したプログラムについてなのですが,立ち上げなおして実行する度に「実行時エラー'6' オーバーフローしました」「インデックスが有効範囲にありません」等のエラーが出て実行できない場合と,正常に実行できる場合があります. (実行の度に実際に異なるエラーが発生している訳ではないと思います) このような現象は何が原因だと考えられるのでしょうか. ご存知の方ご教授ください.

専門家に質問してみよう