
ACCESS VBAにてCSVファイルを並び順を変えずにインポートするにはどうしたらよいでしょうか?。
ACCESSはリレーショナルデータベースなので、インポート順が保障されていませんが、私はそれでは困るのです。
困ったプログラムはこんな感じです。
DoCmd.TransferText acImportDelim, , "付け足しCSV", msg, True
Strsokuteibi = "" & rs.Fields(0).Name & ""
Strsentougyou = rs.Fields(0).Name
SQL = "INSERT INTO CSVまとめ ( 計測日, グループ, サイト名, サイトURL, 検索語, Yahoo, [Yahoo URL], Google, [Google URL] )" & _
"SELECT """ & Strsokuteibi & """ AS 日付, 付け足しCSV.[" & Strsentougyou & "], " & _
"付け足しCSV.F2, 付け足しCSV.F3, 付け足しCSV.F4, 付け足しCSV.F5, 付け足しCSV.F6, 付け足しCSV.F7, 付け足しCSV.F8 " & _
"FROM 付け足しCSV;"
Set Qdf = CurrentDb.CreateQueryDef("CSV追加Q", SQL)
Set Qdf = Nothing
DoCmd.OpenQuery "CSV追加Q"
DoCmd.Close acQuery, "CSV追加Q"
上記のような感じで。
ええと。CSVファイルの先頭行というかフィールド名はがっつり使います。
なので、オートナンバー行を作り、そこへインポートするにも、ええと、CSVファイルのフィールド名は変わっていくので、適合しないのですね。さまざまなフィールド名があるのです。
柔軟にしないと?。
はたして、どうしたらよいのでしょうか?。
馬鹿な私にもわかるようにわかりやすくお願いします。
また、土日は環境が無いので、あまりお返事できません。
ごめんなさい。

No.5ベストアンサー
- 回答日時:
このような特殊な案件では、VBAでしこしこ作るよりありませんね。
CSVの1行目を読み込んで、テーブルをクリエイトする。
このとき、オートナンバーも付ける。
2行目以降を1行ずつ読み込んでテーブルに書き込む。
LineInputで1行読んでSplit関数で配列にし、
その配列(添え字)をテーブルのFields(添え字)に書き込む。
この仕掛けを1つ作れば、他のCSVにも適用できるかと。
わぁ。なんだかそれは良さそうです。
しかし、私はすごく馬鹿なのでぜひともサンプルコードを書いていただければと思います。
今は環境がないのでサンプルコードが有るにせよ無いにせよお返事は月曜か火曜になります。
ありがとうございました。

No.4
- 回答日時:
アクセスにインポートしてどの様に使うつもりですか?
フィールド名がバラバラならプログラムも何も作れませんし。
どうみても、エクセルを使うべき案件の様にしか思えません。
よろずやkinchan様、夜分遅くのご回答ありがとうございます。
書いて有るSQLステートメントを読むと分かる様にフィールド名を取得してこれをデータとして使っています。
この試みはお解りの様に成功しています。
アクセスDBにするのはお客様のご要望ですし。
Excelは考えられません。
読めない様な汚いコードでお目汚しすみません。

よろずやkinchan様お返事ありがとうございます。
CREATEと言うかインポートすればテーブルできるので、CREATEじゃないのですね。
インポートしたテーブルが既に順番がぐちゃぐちゃなのです。
ええと、言葉足らずですみません。
ちょっと補足します。
No.2
- 回答日時:
No.2です。
複数のCSVファイルをって訳じゃないようですね。
検索してみた中には
>mdbをAccess2010で使用すると
みたいな記事もあります。
もしmdbで作成されているなら新しいaccdbに切り替えた方が安定するのかも知れない。
ただ今現在accdbであるのなら・・・Accessは良くわかりません。
てっきり複数のCSVファイルを順次読み込む際の順番かと思ってましたし。
めぐみん様、お忙しいところいろいろ考えてくれてありがとうm(_ _)m。
アクセスだけでなく、リレーショナルデータベースではオラクルでも勝手に順番入れ替わります。
安定も何もDBならばむつかしいかと………。
一CSVファイル内です。
よろしくお願いします。
No.1
- 回答日時:
ハッキリ言います。
Accessはよく知りません。>CSVファイルを並び順を変えずに
そもそもどんな順番に並んでいるのが正解と思ってますか?
名前順とか何かあるのでしょうけど、最初にそのリストを作成し順次吐き出すループを作るというのではダメなのでしょうか?
Excelなら.NET FrameworkのSystem.Collections.SortedListにファイル名を放り込んでいけば、勝手に昇順に並び変わります。
あとは頭からIndexを使って吐き出せば、一応昇順に並んだファイルの処理が可能と言えると思います。
あ”、でも単にファイル名だけならSystem.Collections.ArrayListでファイル名を追加していって終わったらSortメソッドで並び換えると
言うのもありかな。
めぐみん様お返事ありがとう。
CSVはCSVの最初からの順番どおりに入れたいです。
何かでソートとかしたくないですし、主キーとなるようなものもありません。
CSVのファイルそのままを最初から順番どおりに入れたいです。
しかし、普通にインポートすると、ACCESSの自由に順番が入れ替わってしまうのです。
困りました。
ちなみに、マクロではなく、VBAでお願いします、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- XML PHP.laravelについて 1 2023/07/06 15:26
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
CSVファイルのエクスポートでソートしたい
Visual Basic(VBA)
-
-
4
Access インポート
Access(アクセス)
-
5
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
6
ACCESS で 項目名を出力せずにエクスポートしたい
その他(データベース)
-
7
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
8
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
9
実行時エラー3131 FROM 句の構文エラーです について
Access(アクセス)
-
10
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
11
Access上で作成したレポートのExcelへのエクスポート
その他(データベース)
-
12
ACCESS VBAでインポート定義の場所
Access(アクセス)
-
13
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
14
Accessを開くと「排他モードじゃないので変更しても保存できない」との旨の表示が出てしまう。
Access(アクセス)
-
15
空白をそのままインポートする方法について
その他(データベース)
-
16
Accessのデータのインポートで重複分を排除
その他(Microsoft Office)
-
17
変数にnullを代入するには
Excel(エクセル)
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
ACCESSにEXCELからインポートした時に先頭に空列ができる
Excel(エクセル)
-
20
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT INTO ステートメントに...
-
SQLServer2005のSQL文での別名...
-
ACCESSで400以上のフィールドが...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
【Access】フォームで自動計算...
-
view作成時にデータ型を変更し...
-
accessのレポートで元になるテ...
-
Accessのテーブル内のフィールド数
-
ExcelのデータをコピーでACCESS...
-
アクセス メモ型 255文字...
-
ACCESS検索★ある文字を複数のフ...
-
アクセス A列コピー B列貼り...
-
Accessで別途保存の画像ファイ...
-
アクセスのテーブルデータをCSV...
-
Accessでテーブルの値をテキス...
-
ACCESSでテーブルのフィールド...
-
IT用語について質問です。 以前...
-
ACCESSでテーブルのチェックを...
-
Access 昇順・降順で並び替え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド数が255しか...
-
INSERT INTO ステートメントに...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
SQLServer2005のSQL文での別名...
-
アクセス エラーを数値「0」に...
-
accessのレポートで元になるテ...
-
アクセス メモ型 255文字...
-
【Access】フォームで自動計算...
-
Accessで、固定アルファベット+...
-
アクセス A列コピー B列貼り...
-
ACCESSでオートナンバーを任意...
-
ACCESSでの改行コード
-
ファイルメーカーでCountifの様...
-
主キーはオートナンバー型のID...
-
ACCESS VBAにてCSV...
-
accessで重複を防ぎたい
-
ACCESSで和暦を西暦に・・・
-
Access:リンクテーブルマネー...
-
ACCESSでテーブルのフィールド...
おすすめ情報
CSVファイルは大量に有ります。
そのフィールド名はファイル事に違います。
オートナンバーをつけたテーブルを用意しようにも、フィールド名がそれぞれ違うので入りません。
そしていちCSVファイルだけでも、インポートすれば並び順がバラバラです。