GetOpenFilenameメソッドを使い[ファイルを開く]ダイアログボックスを表示して選択したCSVファイルのデータをインポートしてアクティブセルを起点に貼り付けるサンプルプログラム。
サンプルプログラム中のSplit関数の第二引数に別の区切り記号を指定すれば、カンマ区切りのCSVファイルに限らず、別の区切り記号を使ったテキストファイルに流用が可能。
以下にサンプルプログラムを記述。
VBAサンプルプログラム
以下のサンプルプログラムは、実行時にカレントディレクトリをデスクトップフォルダ変更した上で[ファイルを開く]ダイアログボックスを表示している。
Sub Sample01()
Dim OpenFileName
'カレントディレクトリをデスクトップに変更
Set wScriptHost = CreateObject("WScript.Shell")
ChDir wScriptHost.SpecialFolders("Desktop")
OpenFileName = Application.GetOpenFilename("CSVファイル,*.csv")
If OpenFileName <> False Then
Dim Fno As Long, txtData, arrData
Dim i As Integer, j As Integer
Fno = FreeFile
Open OpenFileName For Input As #Fno
'先頭行をスキップしたい場合は、以下の1行のコメントアウトを外す
'Line Input #Fno, txtData
j = 0
Do While Not EOF(Fno)
Line Input #Fno, txtData
'カンマ以外が区切り記号になっている場合は、
'Split関数の第2引数を変更すればよい
arrData = Split(txtData, ",")
For i = 0 To UBound(arrData)
ActiveCell.Offset(j, i).Value = _
Replace(arrData(i), """", "")
'↑引用符を削除する処理
Next i
j = j + 1
Loop
Close #Fno
End If
End Sub
コメント