• 締切済み

VB実行時エラー75:「パス名が無効です」について

LittleSeaの回答

回答No.2

エラー自体の表示をしないようにしたいのか、 エラーの原因を追求したいのか、 そこが少し分かりません。申し訳ないです。 後者と仮定します。 分からない上で書くので、的外れかもしれませんが、 1枚目のFDと2枚目のFDに書き込むファイルは、 別ファイルですよね?どうなんでしょう・・・ 別ファイルなら、1枚目から2枚目に移るときに、 ファイルのCloseはされてますよね? 同一ファイルという事は無いと思うのですが、 そうだとしたら、1回しかOpenしてないとすると、 エラーになるかもしれません。 もし、1枚目も2枚目も何も入ってないディスクだと した場合、Open時にファイルは作成されます。 1枚目を抜く前にCloseして、2枚目に書き込むタイミング でOpenし直さないといけないと思います。 これも、考えにくいのですが、1枚目と2枚目の、 保存するディレクトリが違うとか・・・ Openでファイルはできますが、フォルダは自動で できないと思います。 うーん。分かりにくい文で申し訳ないです。 多分、解決にはならないかと思いますが・・・ もし、これで解決できないのでしたら、 「VB初心者友の会」の方へ質問されたほうが、 ここより専門的に聞けると思います。 お役に立てず申し訳ないです。

参考URL:
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html
takekun22
質問者

補足

回答ありがとうございます。 >エラー自体の表示をしないようにしたいのか、 >エラーの原因を追求したいのか、 >そこが少し分かりません。申し訳ないです。 >後者と仮定します。 →申し訳ございません。どうしたいのかを詳しく書き忘れた当方のミスです。  (1)エラー自体を発生させないようにしたいのと、  (2)エラーの本当の原因が知りたいのです。 >分からない上で書くので、的外れかもしれませんが、 >1枚目のFDと2枚目のFDに書き込むファイルは、 >別ファイルですよね?どうなんでしょう・・・ →そうです。別ファイルです。 >別ファイルなら、1枚目から2枚目に移るときに、 >ファイルのCloseはされてますよね? →はい、クローズされています。 >これも、考えにくいのですが、1枚目と2枚目の、 >保存するディレクトリが違うとか・・・ >Openでファイルはできますが、フォルダは自動で >できないと思います。 →フォルダは使用せずにFDドライブの直下にテキストで保存しています。(例:番号1のデータは、A:\1.txt,番号2のデータは、A:\2.txt) 参考URLどうもありがとうございます。 調べ直します。 今回はご丁寧にどうもありがとうございました。 また何かありましたらよろしくお願い致します。

関連するQ&A

  • 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マシンでちゃんと動作するのもあります) ズバリの解決法、情報へのポインタ、アドバイス、ヒント... を求めております。よろしくお願いいたします。

  • 「パス名が無効です」の発生原因

    客先に納入したVBのプログラムなのですが、先日「75:パス名が無効です」のエラーが発生しました。 エラーが発生した部分はファイルをオープンし、読み込む処理を行っているところです。 このファイルは他のプログラムからもアクセスすることがあるためオープン時にロックして処理を行っています。 「55:ファイルは既に開かれています」や「70:書き込み出来ません」のエラーが発生することは分かっていたのでエラートラップを仕込んであります。 以下にその処理を抜粋しました。 intFileNo = FreeFile() Open strFileName For Random Lock Read Write As #intFileNo Len = Len(udtHeader) …(ここにエラートラップ処理が記述してあります) Get #intFileNo, 1, udtHeader close ※strFileNameには読込対象となるファイル名が格納されます。iniファイルから読み込んだ値と固定文字列から生成しているので空白になっていたりすることは考えられません。 ※udtHeaderはレコードで読み書きするためのユーザ定義型変数です。 上に記述した他のプログラムも同様の処理でファイルアクセスを行っています。 ファイルオープン前にファイルの有無チェックは行っています。 この中の処理で「パス名が無効です」が発生する要因が分からず困っています。 自分だけではなく他のプログラムもアクセスすることが要因としてあるだろうとは思うのですが、どのような状況になれば発生するかが分かりません。 もし、なにか分かる方がいらっしゃいましたらご教授お願いします。

  • VB2005をインストールしようとするとエラーがでてインストールできない。

    VB2005をインストールしようとすると 「変換するときにエラーが発生しました。指定された変換のパスが有効であることを確認してください。」 とメッセージがでてきます。以前VB2005をアンインストールした経緯があるのでそれが原因でしょうか?どう対処したらよいのでしょうか? NEC VALUESTAR PC-VC800J5FD WindowsMEです。

  • 【VB6.0】ファイルからサイズの大きいバイナリデータを読み込む際にエラー

    はじめまして。 初投稿の新米プログラマです。 VB6.0で多種類のファイルをバイナリデータとして読み込んで 返却する関数を作成しています。 '------------------------------------- ' ファイルからバイナリデータを読み込む '------------------------------------- private Function GetBinaryData(ByVal strFileName As String) As Byte() On Error GoTo Exception Dim fileNo As Integer Dim fileSize As Long Dim bytData() As Byte 'ファイルのサイズを取得する fileSize = FileLen(strFileName) ReDim bytData(fileSize - 1) 'バイナリデータ読み込み fileNo = FreeFile Open strFileName For Binary Access Read As fileNo Get #fileNo, , bytData Close #fileNo '戻り値の設定 GetBinaryData = bytData Exit Function 'エラー処理 Exception: MsgBox (CStr(Err.Number) & " " & Err.Description) End Function ですが、↑の関数にサイズの大きなファイル(100M程度)を指定したとき  ReDim bytData(fileSize) で、「メモリが不足しています」というエラーが発生してしまいます。 発生の仕方としては、'エラー処理のMsgBoxで表示されることも ありますし、プログラムが停止することもありますし、 On Error GoToを記述しているのにも関わらず VBのメッセージボックスが表示されることもあります。  #[継続][終了][デバッグ][ヘルプ]のボタンが出ているやつです。 ちなみに、50M程度のファイルであれば読み込めています。 このエラーが発生する原因は何なのでしょうか? また、解決方法(サイズの大きなファイルを確実に読み込む方法)は あるのでしょうか? 解決方法がないのであれば、「○M以上のファイルはエラー」という 仕様にしようと思うのですが、 何Mまでなら確実に読み込むことが出来るのでしょうか? …もしくは上のコーディング自体、検討違いでしょうか^^;  #バイト配列の要素数に上限があるとか…? とても困っています… どうかよろしくお願い致します。

  • VB4でパスが見つかりません

    すみません、また教えて下さい。 VB4でプログラミングをしています。 VB4の入っているPCでは、期待通りに動くのですが、 セットアップウイザードで標準で配布されるファイルを付けて、 (次へ次へとクリックして)配布用ディスクを作り、 別のVB4の入っていないPCにセットアップして、 実行しようとすると、 「実行時エラー’76’パスが見つかりません」と出て動きません、 これは、何のパスが見つからないのでしょうか? PCは共にWin98seです。 単純な画面とやり取りして、ファイルを作るプログラムです。

  • VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい

    VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい 環境:VB6.0/Excel2003/WindowsXP VB初心者です。 現在プログラム内で参照しているexcelファイルの絶対パスと、フォームのテキストボックスに入力された絶対パスを比較して、 それらが同一だった場合エラーを表示するというプログラムを作成しています。 プログラム内では、現在開かれているエクセルファイルの内容をチェックして、対象となるデータを持っているエクセルファイルを1つ選択し、データを取り込むという動きをしています。 現在開かれているファイルのパスと入力されたパスを比較する事は出来たのですが、 そうではなくデータを取り込んでいるエクセルファイルのみ比較したいのです。 (複数のファイルが開かれている場合、データを取り込んでいるファイルとは別のファイルのパスが入力されたファイルパスと同一だったときもエラーとなってしまうので..) データを取得しているところからはフルパスは取れそうにないので、ほかの方法を模索しています。 どうぞ宜しくお願い致します。

  • ファイルが開かれているかどうかの判断

    ある処理を行ってその結果をテキスト形(メモ帳など)に出力するもの作成しています。 EXCELだと FILENO = FreeFile Open パス名 For Output As #FILENO これでもし指定のファイルがすでに開いていたらエラーになってエラールーチンで拾えるのですが テキスト形(メモ帳など)のときだとエラーになりません。 どう対処すればいいのですか?

  • VBでのエラー処理(On Error)

    VBで以下のようなプログラムを書いています。 sub On Error goto Err 処理1 Err: 処理2 End sub 処理1でエラーが発生した場合、Err:の処理に入ってくるのですが、もしErr:の中の処理2でもエラーが発生した場合、どうすればよいのでしょうか? Err:の中でもエラー処理ができるのでしょうか、それともロジックで回避しなければならないのでしょうか? ご存知の方がいらっしゃいましたら宜しくお願いします。

  • VB6.0で、ランタイムエラーを全て出力するには?

    VB6.0で作成したプログラムの実行中にランタイムエラー(以後、「エラー」と記載)が発生した場合、 発生したエラーを全てログに出力し、後続処理を継続する方法を教えてください。 以下に詳細を示します。 '=============================== ' サンプル '=============================== Sub Main()   On Error Resume Next   処理A   処理B   処理C   処理D   If Err.Number <> 0 Then     Errの情報をログに出力   End If End Sub 例えば、上記プログラムの処理Aと処理Cでエラーが発生した場合、 それぞれのエラー情報を出力して、処理Dまでの処理を実行したいです。 しかし、上記のプログラムでは、処理Cのエラーによって処理Aでのエラーが上書きされてしまいます。 処理Aの後にも「Errの情報をログに出力」処理を入れれば良いのかもしれませんが、 実際のプログラムでは、どこでエラーが発生するか分からない前提としたいので、 この方法でエラーを出力しようとすると、プログラムが「Errの情報をログに出力」処理だらけになってしまいます。 何か良い方法はありますでしょうか?

  • VB6.0でACCESSのコマンドを実行するには?

    教えてください。よろしくお願いします。 VB6.0のプログラムからACCESSに文字データを渡し、それをキーにしてACCESSのテーブルから該当するデータをACCESSのテキストボックスに表示させたいのですが、検索・表示のプログラムはACCESSで記述ずみですので、VBからは引数を渡して、ACCESS側のVBAのプログラムを実行させたいのです。 その際、ACCESSの引数を渡すMDBが起動していなかったら、起動させて、上記の処理をさせたいのですが。 分かりづらい文章で申し訳ありませんが、どなたかアドバイスをお願い致します。