
No.1ベストアンサー
- 回答日時:
AAA1,BBB1
AAA2,BBB2
AAA3,BBB3
例えば、このようなデータを添付図のようにテーブルに追加するには、一般的には VBA コードをシコシコと書きます。
理由1、重複インポートを回避するため。
理由2、各列のデータを必要に応じてチェックするため。
理由3、列を省いたり、追加したりするため。
理由4、列の順序を変えることもあるため。
理由5、列のデータを変換・置換することもあるため。
挙げれば切りがありませんが、このような理由で一般的には VBA コードをシコシコと書きます。
【私が書いたVBAコードの概要】
1、インポートSQL文の雛形を準備。
strSQL = "INSERT INTO Test (Field1, Field2, Field3) " & _
"VALUES ('2014/10/27', 'XXXXX', 'YYYYY')"
2、テキストを配列に読み込む
strReadCols() = FileReadArray(strFileName)
ここでは、File Scripting Runtime を利用した関数を利用。
3、インポート文を作成し実行。
strImport = Replace(strSQL, "XXXXX", Trim(CutStr(strReadCols(I), ",", 1)))
strImport = Replace(strImport, "YYYYY", Trim(CutStr(strReadCols(I), ",", 2)))
DoCmd.RunSQL strImport
【私が書いたVBAコードの全体像】
DIM文とREM文とは省いた全体の行数は21行です。
' ---------------------------------
' 読み込むファイルのチェック
' ---------------------------------
strFileName = "F:\Temp\Test.txt"
isFound = FileExists(strFileName)
If isFound Then
' -------------------------
' インポートSQL文を準備
' -------------------------
strSQL = "INSERT INTO Test (Field1, Field2, Field3) " & _
"VALUES ('2014/10/27', 'XXXXX', 'YYYYY')"
' -------------------------
' Access の警告をなしに
' -------------------------
DoCmd.SetWarnings False
' -------------------------------
' テキストを配列に読み込む
' -------------------------------
strReadCols() = FileReadArray(strFileName)
N = UBound(strReadCols())
For I = 0 To N
・・・・・
Next I
' ----------------
' 終了処理
' ----------------
Message (N + 1) & "行を追加しました!"
' -------------------------
' Access の警告を復活
' -------------------------
DoCmd.SetWarnings True
Else
Warning "'F:\Temp\Text.txt'は、見つかりません!"
End If
AccessのVBA、あるいはプログラミングそのものに従事したのは1996年まで。ですから、FileExists()、FileReadArray()、Warning()などの関数を書いてテストし、それからインポートコードを書いてバグを取るのにアタフタ。結局、90分を費やしてしましました。まあ、ここまで提示すれば質問者は苦もなく再現できるでしょう。頑張られてください。

No.3
- 回答日時:
あらかじめテーブルに日付のフィールドを作成しておき
その「既定値」 を 「=Date()」 としておくのが簡単かと思います。
No.2
- 回答日時:
補足:VBAコードを書きたくないのであれば・・・。
1、テキストファイルを編集する。
2、インポート後に追加する。
などかと。
strImport = Replace(strSQL, "XXXXX", Trim(CutStr(strReadCols(I), ",", 1)))
strImport = Replace(strImport, "YYYYY", Trim(CutStr(strReadCols(I), ",", 2)))
DoCmd.RunSQL strImport
の部分を
strSQL = Replace(strSQL, "XXXXX", Trim(CutStr(strReadCols(I), ",", 1)))
strSQL = Replace(strSQL, "YYYYY", Trim(CutStr(strReadCols(I), ",", 2)))
DoCmd.RunSQL strImport
と書いて雛形から"XXXXX"と"YYYYY"を消したために全てが1行目をインポートする羽目に。このバグ取りに45分。実に90分の半分を浪費。まあ、私みたい者が下手にVBAコードを書くとこういうチョンボも。まあ、一度、こういうインポートコードを手中にすると、Access のインポート機能を利用することはないでしょう。が、この初手の壁を越えたくなければ冒頭のような別手段もありです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- Excel(エクセル) Excelの帳票形式をアクセスに取り込むため、 csvのデータ形式になるように、マクロを作成している 2 2022/06/12 22:52
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
accessのデータを検索するツー...
-
ACCESS ユニオンクエリ...
-
ACCESS、フィールドが異なるデ...
-
アクセス2010にエクセルデータ...
-
アクセスの容量がなぜか増加します
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
エクセルにおける「フィールド...
-
アクセスのエラー「クエリには...
-
Access テーブルを分割してエク...
-
Accessで、1つの項目に複数の...
-
Excleピボットでデータのない部...
-
クエリで割り算する方法を教え...
-
Acsess アクセス のクエリで...
-
Accessを開きなおすとテキスト...
-
ACCESS2000 更新クエリで文字...
-
ACCESS クエリの抽出条件に他の...
-
アクセスで追加した項目に全て...
-
ACCESS2000 クエリをテーブル化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSにEXCELからインポートし...
-
Access フォームからの入力結...
-
アクセス2003 複数の列に...
-
ACCESS、フィールドが異なるデ...
-
アクセス2010にエクセルデータ...
-
アクセスの容量がなぜか増加します
-
Access(アクセス)でのインポー...
-
accessのデータを検索するツー...
-
アクセス 日付を項目追加して取込
-
ACCESS ユニオンクエリ...
-
Access テーブルをデータシー...
-
テキストでは0が表示。アクセ...
-
アクセス2000 65536行を超える...
-
今あるデータベース(Access200...
-
Acccessのテーブルデータ保存に...
-
Access2010でVBAでのインポート
-
access 2003 1万件以上がカット...
-
アクセスでの、固定長でのテキ...
-
Access2016でフォーム内にExcel...
-
EXCELのデーターを同じようにAC...
おすすめ情報