• ベストアンサー

【Access2000】CSVファイルのインポート方法

Access2000(OS:WinXP)でCSVファイルをインポートするVBAを作成しています。 Open "ファイル名" For Input As #txtFileNumber Input #txtFileNumber, txt1, txt2... 上記のようにtxt1,txt2...の変数に代入しているのですが、CSVファイルの行数が可変のため、どうすれば良いのか困っております。最大100フィールド程あるのですが…。何か良い方法がありましたらお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.2

1,2,3,4 1,2,3,4,5,6 1,2,3,4,5,6,7,8 このような Test.csv があるとします。 Private Sub コマンド0_Click()   Dim I    As Integer   Dim N    As Integer   Dim Datas() As String      Datas() = FileReadArray("C:\Temp\Test.csv")   N = UBound(Datas())   For I = 0 To N     Debug.Print Datas(I)   Next I End Sub [イミディエイトウィンドウ] 1,2,3,4 1,2,3,4,5,6 1,2,3,4,5,6,7,8 と、このように読み込むことが可能です。 Private Sub コマンド0_Click()   Dim I    As Integer   Dim J    As Integer   Dim N    As Integer   Dim M    As Integer   Dim Datas() As String   Dim Fields() As String      Datas() = FileReadArray("C:\Temp\Test.csv")   N = UBound(Datas())   For I = 0 To N     Fields() = Split(Datas(I), ",")     M = UBound(Fields())     For J = 0 To M       Debug.Print Fields(J)     Next J     Debug.Print "---------"   Next I End Sub と、改造すれば、各行の列データを取り出すことも可能です。 1 2 3 4 --------- 1 2 3 4 5 6 --------- 1 2 3 4 5 6 7 8 --------- ※参照設定で、Microsoft scripting runtime を参照するようにする必要があります。 ※長くなりますので、FileReadArray()はおって紹介します。

その他の回答 (2)

noname#22222
noname#22222
回答No.3

s_husky です。 FileReadArray()は、私が利用しているAccess の標準モジュール[ファイルアクセスライブラリ] の中の一つの関数です。 以下は、それに関する説明文です。  Microsoft のオブジェクト志向の成果の一つは、Scripting.FileSystemObject です。これによって、ファイルの読み込みや書き出しが画期的に簡単になりました。第三章では、更に、一歩進んだ、より簡便なファイルシステム関数を作成します。  scrrun.dll と参照設定  Scripting.FileSystemObject は、scrrun.dll で提供されています。そこで、Access の VBA が同 dll を参照するように設定する必要があります。VBA エディタを開き、[ツール(T)]-[参照設定(R)]の手順で参照設定を更新して下さい。 201: FolderExists() フォルダの有無を検査し真または偽を返します。  202: FileExists() ファイルの有無を検査し真または偽を返します。  203: FileSize() ファイルのサイズをバイト単位で返します。  204: GetFileList() フォルダの公的なファイル一覧を配列に格納します。  205: FileWrite() ファイルに文字列を書き込みます。  206: FileReadAll() ファイルの全てを読み込みます。  207: FileRead() ファイルの各行を順次に読み込みます。  208: FileReadArray() ファイルの各行を配列に読み込みます。  ・・・略・・・ Public Function FileReadArray(ByVal FileName As String) As String() On Error GoTo Err_FileReadArray    Dim fso    As FileSystemObject    Dim fil    As File    Dim txs    As TextStream    Dim strText  As String    Dim strTexts() As String       Set fso = New FileSystemObject    Set fil = fso.GetFile(FileName)    Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)    strText = txs.ReadAll    strTexts = Split(strText, Chr$(13) & Chr$(10)) Exit_FileReadArray:    FileReadArray = strTexts()    Exit Function Err_FileReadArray:    MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"    strTexts() = Split("")    Resume Exit_FileReadArray End Function FileReadArray関数が読み込んだ配列の添字が -1 の場合は、読み込みが行われなかったことを示しています。

yui_kis
質問者

お礼

素早い回答感謝しております!早速試してみます。本当にありがとうございました。

回答No.1

Open FNAME_XX For Input As #1 Do While Not EOF(1) Input #1, TXT1,TXT2,TXT3,・・・・・・・・・・ Loop Close #1 VB6使用

関連するQ&A