「ファイルが見つかりません」を改善するには?

解決


イケジロウ  2007-02-02 06:53:25  No: 97828

卒業論文で使用するプログラムの中に
Open "C:\ibasic2\vbondo-3.txt" For Input As
と打ち込んでいます。ですがコンパイル後実行にてコマンドボタンを押すと「ファイルが見つかりません」とエラーメッセージが出てきます。
改善するためにvbondo-3.txtというファイルをプログラムのあるフォルダにいれフォルダのアドレス、ファイル名をコピー貼り付けにて行いましたが解決しません。
当方、参考書片手にプログラムを組む門外漢のド素人なので、ぜひ教えていただきたく思います。


ヤマ@文系  2007-02-02 11:00:34  No: 97829

原因が不明ですが、
openfiledialogやcommondialog(VB6)で
ファイルのパスを取得してから
開いてみるのも手かもしれません。手間ですが。


通ってみた  2007-02-02 13:08:37  No: 97830

>vbondo-3.txtというファイルをプログラムのあるフォルダにいれ

Open App.Path & "\vbondo-3.txt" For Input As〜

としてもだめでしょうか?


イケジロウ  2007-02-02 19:21:52  No: 97831

ヤマ@文系 さん
>openfiledialogやcommondialog(VB6)
「Dir1.Path & "\"& File1.fileName」のことですか?
通ってみた  さん
>Open App.Path & "\vbondo-3.txt" For Input As〜
ダメでした。

追記です。問題の「vbondo-3.txt」はC++で作ったファイルで、中身は
「1 1.0 0.0 0 1006.7」
のように表記されています。それぞれ番号  X座標  Y座標  温度の有無  温度  という順に1〜1030行あるファイルです。続きは

Open "C:\ibasic2\vbondo-3.txt" For Input As
For L =1 To 1030
Input #2, node(L), X(L), Y(L), bc(L), temp(L)
next L

となっています。誤りがあるでしょうか?


大吉末吉  2007-02-02 20:21:47  No: 97832

イケジロウ  さん  こんにちは。

使っているのは、VB6とかですか?

>「ファイルが見つかりません」
> Open "C:\ibasic2\vbondo-3.txt" For Input As

先ず確認すべきなのは、そのファイルが「実際にどこのフォルダにあるか」ですね。
実際のフォルダ名を提示ください。

> プログラムのあるフォルダ
とは、どこのフォルダですか?
実際のフォルダ名を提示ください。

> ですがコンパイル後実行にて
開発環境上で実行しているってことですよね?
プロジェクトの保存はしてますか?
#念の為、確認です。


イケジロウ  2007-02-02 20:43:12  No: 97833

大吉末吉  さん  お世話になります。
使っているのは「visual basic 6.0」です。
ファイルはローカルディスクCの「ibasic2」フォルダの中に
にあります。「vbondo-3.txt」も同フォルダ内にあります。

>開発環境上で実行しているってことですよね?
その通りです。プロジェクト保存は毎回行っています。


K・今川  2007-02-02 22:08:28  No: 97834

>Open "C:\ibasic2\vbondo-3.txt" For Input As
>For L =1 To 1030
>Input #2, node(L), X(L), Y(L), bc(L), temp(L)
>next L

ところで AS の 後ろに #2 が付いていない様ですが
なぜコンパイルエラーにならないのでしょう。


イケジロウ  2007-02-02 22:31:19  No: 97835

K・今川  さん    
ご指摘ありがとうございます。

申し訳ありません。記載ミスです。ネットにつながってないパソコンのため
手打ちで乗せていました。
実際には
Open "C:\ibasic2\vbondo-3.txt" For Input As  #2
For L =1 To 1030
Input #2, node(L), X(L), Y(L), bc(L), temp(L)
next L
です


大吉末吉  2007-02-02 22:32:16  No: 97836

> ファイルはローカルディスクCの「ibasic2」フォルダの中に
> にあります。

ココで言っている「ファイル」って何です?プロジェクトファイル?

> 「vbondo-3.txt」も同フォルダ内にあります。

変ですね・・・

> Open "C:\ibasic2\vbondo-3.txt" For Input As #2
エラーは、確実に、ココで発生しているんですよね?
#この行が黄色く表示される?別の箇所が黄色くなるわけじゃないですよね?

例えば、Openの直前に、

MsgBox Dir("C:\ibasic2\vbondo-3.txt")

を追加するとどう表示されますか?


イケジロウ  2007-02-02 23:11:30  No: 97837

>ココで言っている「ファイル」って何です?プロジェクトファイル?
15KBのFormファイルと1KBのプロジェクトファイルです。

> Open "C:\ibasic2\vbondo-3.txt" For Input As #2
>エラーは、確実に、ココで発生しているんですよね?
この行が黄色くハイライトします。

MsgBox Dir("C:\ibasic2\vbondo-3.txt")をOpen文の前においてコンパイルを通したら「project1」というウィンドウ(OKというボタンが表示されている)が新たに出てきてそれを押すとやはり
Open "C:\ibasic2\vbondo-3.txt" For Input As #2
が黄色くハイライトします。


あんび  2007-02-02 23:26:04  No: 97838

ファイルが見つかってないですね。
メモ帳でCドライブ直下にA.TXTとつくって(中身はなんでもよい)
MsgBox Dir("C:\A.TXT")
としたら、A.TXTと表示されるのを確認してください。

C:\ibasic2\vbondo-3.txt
↑本当にありますか?全角・半角は大丈夫ですか?
C:\ibasic2\vbondo-3.txt.txtとかじゃないですよね?


イケジロウ  2007-02-02 23:44:02  No: 97839

あんび  さん  ご指摘ありがとうございます。

>A.TXTと表示されるのを確認してください。
行ったところウィンドウ(project1)にC:\A.TXTと表示されOKボタンが表示されます。

全角半角は大丈夫です。


大吉末吉  2007-02-03 00:01:25  No: 97840

あんび  さん  が言っているように、
> ファイルが見つかってないですね。
ですね。

> >MsgBox Dir("C:\A.TXT")
> >A.TXTと表示されるのを確認してください。
> 行ったところウィンドウ(project1)にC:\A.TXTと表示されOKボタンが表示されます。

え!  「A.TXT」ではなく、「C:\A.TXT」なのですか???
変ですね・・・

先ほどの、
> MsgBox Dir("C:\ibasic2\vbondo-3.txt")

> MsgBox Dir("C:\ibasic2\*.txt")

> MsgBox Dir("C:\ibasic2\")
に変えてみたらどうなりますか?


魔界の仮面弁士  2007-02-03 00:19:06  No: 97841

> MsgBox Dir("C:\ibasic2\vbondo-3.txt")をOpen文の前において
> コンパイルを通したら「project1」というウィンドウ
>(OKというボタンが表示されている)が新たに出てきて

タイトルだけで、メッセージ部は空欄なのですね?

MsgBox Dir("C:\A.TXT") ならば、「A.TXT」と表示されるのに、
MsgBox Dir("C:\ibasic2\vbondo-3.txt") だと表示されないのなら、
ファイルが本当に存在しない(パスが違っている)のでしょう。

(またはアクセス権が無いのかも知れませんが…その場合は違うエラーになるかも)

とりあえず、C:\ibasic2\vbondo-3.txt の存在チェックという事で。

===================
Dim S As String

Debug.Print "--- C:\ のディレクトリを列挙 ----"

S = Dir("C:\", vbDirectory)
Do Until S = ""
    If (GetAttr("C:\" & S) And vbDirectory) = vbDirectory Then
        Debug.Print "<DIR>", "["; S; "]"
    Else
        'Debug.Print "File:", "["; S; "]"
    End If
    S = Dir()
Loop
Debug.Print "--- C:\ibasic2\ のディレクトリを列挙 ----"
S = Dir("C:\ibasic2\*.*", vbDirectory Or vbHidden Or vbSystem Or vbReadOnly)
If S = "" Then
    Debug.Print "ディレクトリがありません。"
Else
    Do Until S = ""
        If (GetAttr("C:\ibasic2\" & S) And vbDirectory) = vbDirectory Then
            'Debug.Print "<DIR>", "["; S; "]"
        Else
            Debug.Print "File:", "["; S; "]"
        End If
        S = Dir()
    Loop

    Debug.Print "--- C:\ibasic2\vbondo-3.txt のファイル走査 ----"
    S = Dir("C:\ibasic2\vbondo-3.txt", vbDirectory Or vbHidden Or vbSystem Or vbReadOnly)
    If S = "" Then
        Debug.Print "ファイルが見つかりません。"
    ElseIf (GetAttr("C:\ibasic2\" & S) And vbDirectory) = vbDirectory Then
        Debug.Print "ディレクトリが見つかりました。[" & S & "]"
    Else
        Debug.Print "ファイルが見つかりました。[" & S & "]"
    End If
End If

Debug.Print "--- END ----"


イケジロウ  2007-02-03 00:19:39  No: 97842

ウィンドウの灰色部分にOKボタンと確かにC:\A.TXTと出ます。
> MsgBox Dir("C:\ibasic2\*.txt")

> MsgBox Dir("C:\ibasic2\")
に変えてみたらどうなりますか?
「引数が一致していません」と出てしまいます。


魔界の仮面弁士  2007-02-03 00:23:57  No: 97843

> え!  「A.TXT」ではなく、「C:\A.TXT」なのですか???
> 変ですね・・・

もしかして、どこかで
    Public Function Dir(S As String) As String
のようなプロシージャが定義してあったために、本来の
VBA.FileSystem.Dir() ではなく、自作の Dir() が呼ばれていたとか…。

# それは無いか。(^^;


イケジロウ  2007-02-03 00:38:08  No: 97844

身近に聞ける人が着たのでちょっと聞いてきます。
しばしお待ちください。


大吉末吉  2007-02-03 00:43:11  No: 97845

#VBの動きが変ですね・・・

> 「引数が一致していません」と出てしまいます。
こんな、エラーメッセージありましたっけ・・・
メッセージの上の部分に「実行時エラー」と用事されて、後ろに番号が表示されていませんか?

> VBA.FileSystem.Dir() ではなく、自作の Dir() が呼ばれていたとか…。

まさかと思いますが、念のため、
「Dir」の部分でマウス右クリックして、表示されるメニューで「定義」を選択してみてください。
どうなります?

#「オブジェクトブラウザ」と言う画面が表示されて上部に「FileSystemのメンバ」と表示されます?
#それとも、別の動作をしますか?


通ってみた  2007-02-03 08:18:25  No: 97846

>問題の「vbondo-3.txt」はC++で作ったファイルで

今見てるプログラムの方の問題ではなく、C++で生成したファイル自体のファイル名が違うのではないかと・・・

生成したファイルの名前をエクスプローラからコピーしてプログラムに貼り付けて確認してみてください
空白などもきっちりと


イケジロウ  2007-02-08 02:58:17  No: 97847

えー暫く書き込みできませんでした。
無事解決できました。原因はフォルダの中にあるテキストファイルのファイル名に「.txt」と書いてあったのでプログラムでは読み込まなかったようです。これまで知恵と時間を割いてくださった皆様。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加