アプリ版:「スタンプのみでお礼する」機能のリリースについて

特定のフォルダにある形式は同じでファイル名の異なる複数のcsvファイルをAccessの特定のテーブルに自動で次々にインポートして1つのテーブルを作成したいのですが、今回の作業をするに当たりVBAに関するの本をはじめて読んだ程度の知識です。
本あるいはこの「教えて」を読んで、TransferTextを使い、Loop~Doでやればよいのかなと思うのですがうまくいきません。
すみませんが教えていただけたらうれしいです。Access2000を使っています。

A 回答 (3件)

CSVファイルはDOS時代からの、ステートメントコマンドで読めます。


いま事情でアクセスが使えないので、エクセルでテスト
しました。参考になればと上げます。
アクセスにエクセルからインポートすることも出来ることですし。
複数あるCSVファイル名をどう指定するか
キーインで聞くか、下記のように配列に定義するか
方法が決めかねていますが。
TransferTextなど使わず、GoTo文多用の拙いもので済みません。
途中のMsgboxは確認用ですから、本番では削除。
Arrayの中のファイル名は自分の場合のものを
入れる、My Documentsのフォルダ名も変える
こと。
Line Input#文を使ったところがミソです。
Sub test01()
i = 1
f = Array("csv1", "aaa", "a11")
k = 0
p05:
Open "c:\my documents\" & f(k) & ".csv" For Input As #1
p02:
If EOF(1) Then GoTo p01
Line Input #1, a
MsgBox a
s = 1
j = 1
p03:
p = InStr(s, a, ",")
If p = 0 Then p = Len(a) + 1
Cells(i, j) = Mid(a, s, p - s)
If p > Len(a) Then GoTo p04:
s = p + 1
j = j + 1
GoTo p03
p04:
i = i + 1
GoTo p02
p01:
Close #1
k = k + 1
If k <= UBound(f) Then GoTo p05
End Sub

この回答への補足

i = 1
f = Array("社員1", "aaa", "a11")
k = 0
p05:
Open "c:\mydata\" & f(k) & ".csv" For Input As #1
上記の形で実施しましたところ、「社員1.csv」のデータはインポートしましたが、次の2つ目の「社員2.csv」のファイルを読み込めませんでした。(エラーメッセージ”ファイルがみつかりません”)全くの素人のため力不足ですみません。
解決策を教えていただけたらうれしいです。

補足日時:2003/08/25 21:59
    • good
    • 0

#1です。


f= Array("社員1", "aaa", "a11") と2番目の要素をそのままにしてはいけません。aaaは私の個人的な、偶々在ったファイルの名ですから。
f = Array("社員1", "社員2", "a11") と変え、また
a11も貴殿の場合の3番目のファイル名を””で囲って置換えてください。あと4つ目以降も同じく、カンマで区切って付け加え、長くなるようなら、スペースとアンダーバーの「継続行の約束書式」を使い次行に続けます。
まあそれにしても限りがあります。数十以上の時は、私なら、エクセルのA列セルに名前を入れて読むとかします。
またあるフォルダの中のCSVファイル名を捕まえるプログラムもDIR関数で出来ます。過去の質問に例があるはずです。
    • good
    • 0
この回答へのお礼

素人で初めての取り組みでしたが、ご指導のとおりDIR関数を使った過去の質問を参考に問題解決できました。素早い対応と親切さに感謝いたします。これを機会に次ぎの新たな挑戦をしたいと思います。本当にありがとうございました。

お礼日時:2003/08/26 22:33

#1です。

#1を上げて思い出しました。カンマで区切られた文字列を、区切りで取り出す方法にSplit関数が使えます。下記などを参考に使っていただけば、プログラムが判りやすく、短くなるでしょう。
Sub test02()
a = "aa,sss,ddd,1"
' a = "1,23,sdf2,22"
b = Split(a, ",")
MsgBox b(0)
MsgBox b(1)
MsgBox b(2)
MsgBox b(3)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A