卒業論文で使用するプログラムの中に
Open "C:\ibasic2\vbondo-3.txt" For Input As
と打ち込んでいます。ですがコンパイル後実行にてコマンドボタンを押すと「ファイルが見つかりません」とエラーメッセージが出てきます。
改善するためにvbondo-3.txtというファイルをプログラムのあるフォルダにいれフォルダのアドレス、ファイル名をコピー貼り付けにて行いましたが解決しません。
当方、参考書片手にプログラムを組む門外漢のド素人なので、ぜひ教えていただきたく思います。
原因が不明ですが、
openfiledialogやcommondialog(VB6)で
ファイルのパスを取得してから
開いてみるのも手かもしれません。手間ですが。
>vbondo-3.txtというファイルをプログラムのあるフォルダにいれ
Open App.Path & "\vbondo-3.txt" For Input As〜
としてもだめでしょうか?
ヤマ@文系 さん
>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
となっています。誤りがあるでしょうか?
イケジロウ さん こんにちは。
使っているのは、VB6とかですか?
>「ファイルが見つかりません」
> Open "C:\ibasic2\vbondo-3.txt" For Input As
先ず確認すべきなのは、そのファイルが「実際にどこのフォルダにあるか」ですね。
実際のフォルダ名を提示ください。
> プログラムのあるフォルダ
とは、どこのフォルダですか?
実際のフォルダ名を提示ください。
> ですがコンパイル後実行にて
開発環境上で実行しているってことですよね?
プロジェクトの保存はしてますか?
#念の為、確認です。
大吉末吉 さん お世話になります。
使っているのは「visual basic 6.0」です。
ファイルはローカルディスクCの「ibasic2」フォルダの中に
にあります。「vbondo-3.txt」も同フォルダ内にあります。
>開発環境上で実行しているってことですよね?
その通りです。プロジェクト保存は毎回行っています。
>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 が付いていない様ですが
なぜコンパイルエラーにならないのでしょう。
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
です
> ファイルはローカルディスクCの「ibasic2」フォルダの中に
> にあります。
ココで言っている「ファイル」って何です?プロジェクトファイル?
> 「vbondo-3.txt」も同フォルダ内にあります。
変ですね・・・
> Open "C:\ibasic2\vbondo-3.txt" For Input As #2
エラーは、確実に、ココで発生しているんですよね?
#この行が黄色く表示される?別の箇所が黄色くなるわけじゃないですよね?
例えば、Openの直前に、
MsgBox Dir("C:\ibasic2\vbondo-3.txt")
を追加するとどう表示されますか?
>ココで言っている「ファイル」って何です?プロジェクトファイル?
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
が黄色くハイライトします。
ファイルが見つかってないですね。
メモ帳でCドライブ直下にA.TXTとつくって(中身はなんでもよい)
MsgBox Dir("C:\A.TXT")
としたら、A.TXTと表示されるのを確認してください。
C:\ibasic2\vbondo-3.txt
↑本当にありますか?全角・半角は大丈夫ですか?
C:\ibasic2\vbondo-3.txt.txtとかじゃないですよね?
あんび さん ご指摘ありがとうございます。
>A.TXTと表示されるのを確認してください。
行ったところウィンドウ(project1)にC:\A.TXTと表示されOKボタンが表示されます。
全角半角は大丈夫です。
あんび さん が言っているように、
> ファイルが見つかってないですね。
ですね。
> >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\")
に変えてみたらどうなりますか?
> 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 ----"
ウィンドウの灰色部分にOKボタンと確かにC:\A.TXTと出ます。
> MsgBox Dir("C:\ibasic2\*.txt")
や
> MsgBox Dir("C:\ibasic2\")
に変えてみたらどうなりますか?
「引数が一致していません」と出てしまいます。
> え! 「A.TXT」ではなく、「C:\A.TXT」なのですか???
> 変ですね・・・
もしかして、どこかで
Public Function Dir(S As String) As String
のようなプロシージャが定義してあったために、本来の
VBA.FileSystem.Dir() ではなく、自作の Dir() が呼ばれていたとか…。
# それは無いか。(^^;
身近に聞ける人が着たのでちょっと聞いてきます。
しばしお待ちください。
#VBの動きが変ですね・・・
> 「引数が一致していません」と出てしまいます。
こんな、エラーメッセージありましたっけ・・・
メッセージの上の部分に「実行時エラー」と用事されて、後ろに番号が表示されていませんか?
> VBA.FileSystem.Dir() ではなく、自作の Dir() が呼ばれていたとか…。
まさかと思いますが、念のため、
「Dir」の部分でマウス右クリックして、表示されるメニューで「定義」を選択してみてください。
どうなります?
#「オブジェクトブラウザ」と言う画面が表示されて上部に「FileSystemのメンバ」と表示されます?
#それとも、別の動作をしますか?
>問題の「vbondo-3.txt」はC++で作ったファイルで
今見てるプログラムの方の問題ではなく、C++で生成したファイル自体のファイル名が違うのではないかと・・・
生成したファイルの名前をエクスプローラからコピーしてプログラムに貼り付けて確認してみてください
空白などもきっちりと
えー暫く書き込みできませんでした。
無事解決できました。原因はフォルダの中にあるテキストファイルのファイル名に「.txt」と書いてあったのでプログラムでは読み込まなかったようです。これまで知恵と時間を割いてくださった皆様。
本当にありがとうございました。
ツイート | ![]() |