ここから本文です

VBAで Sub test() Dim i As String Dim v As Variant

hor********さん

2015/6/2515:07:10

VBAで
Sub test()
Dim i As String
Dim v As Variant

Open ThisWorkbook.Path & "\test.csv" For Input As #1
Do Until EOF(1)
Line Input #1, i
v = Split(i, ",")
MsgBox v(0) & " " & v(1) & " " & v(2)
Loop
Close #1
End Sub

と同じ結果を出せるように、
GetOpenFilenameメソッドを利用して書き換えたいのですがどうすればいいでしょうか。

補足それと、EDFの(1)の存在意味もよくわかりません。
ベーシックから順に学んでいるわけでない(スタンダードの教科書片手にVBAのホームページで実践的にやっている)ので、細かく和訳といいますか、

基本的な解説からしていただけると非常にありがたいです。

閲覧数:
69
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

hig********さん

2015/6/2804:05:08

修正前
Open ThisWorkbook.Path & "\test.csv" For Input As #1

修正後
Dim OpenFileName As Variant
OpenFileName = Application.GetOpenFilename("*.csv")
If Vartype(OpenFileName)=vbBoolean Then Exit Sub 'キャンセルされた場合は終了
Open OpenFileName For Input As #1

開きたいのがcsvなら、下記方法で一気に開けます。

Sub CSVopen()

Dim OpenFileName As Variant
OpenFileName = Application.GetOpenFilename("*.csv")
If VarType(OpenFileName) = vbString Then
Workbooks.OpenText Filename:=OpenFileName, _
DataType:=xlDelimited, Comma:=True
End If

End Sub

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tn_********さん

2015/6/2613:16:52

eofは最終行に達していればTrueを返すという関数です。
Line input は1行読み、次の行に移る。
なので、両方があって初めて成り立ちます。
Line input がないと永久ループに入ります。

eofの後の(1)はファイル№の#1の1です。

FSOはフォルダやファイルの操作なので、開いてからの処理は同じですよ。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる