
同様の質問が発見できなかったため質問させて頂きます。
アクセスを利用して日々の電力監視のデータを管理しようと思います。
データを出力するシステムの都合で、日々のデータがcsv形式で毎日1ファイル生成されます。
ファイル名は[AT20070925.csv]のような形です。
このファイルをアクセスにインポートする際、ファイル名をダイレクトに指定しなくてもインポートするファイルを指定することは出来るのでしょうか?
具体的には
(1)毎日指定した時間にデータを取り込むものとして、本日の(または前日の)ファイル名のデータを取り込む
(例えば9月26日0時2分に9月25日のデータ[AT20070925.csv]を自動的にインポートする)
(2)処理を行う際に随時指定した日付のファイル名のデータを取り込む
(フォームで日付を指定し、例えば9月25日と指定したら[AT20070925.csv]を随時インポートする)
インポートするファイル名に変数を使うことは可能なのでしょうか?
また実際にはインポートでなくリンクを使用する可能性もあるのですが、リンクでも同じ様な処理は出来るのでしょうか?
良い方法等ありましたらご教授いただければと思います。
No.2ベストアンサー
- 回答日時:
>インポートするファイル名に変数を使うことは可能なのでしょうか?
可能です。
1、2ともに「AT20070925.csv]という文字列(日付部分が変化)を生成する方法がわかればよいですよね? サンプルを書きましたので参照されてください。(ファイルがCドライブ直下にある場合の定義です。C:\AT20070925.csv というような文字列になります。)
(1)のパターン 「昨日」
FileName = "C:\AT" & Format(Date-1, "yyyymmdd") & ".csv"
(2)のパターン 「フォーム内のTextBox1の値」
FileName = "C:\AT" & Format(Me.TextBox1.Value, "yyyymmdd") & ".csv"
これで変数FileNameにご希望の文字列が格納されます。
あとは、DoCmd.TransferTextメソッドでこのFileNameを引数に指定してあげれば希望のテーブルにインポート/リンク可能です。インポートの場合の例は下記のとおりです。リンクの場合もほぼ同じです。(デリミトの形式はCSVは省略可です、、、確か。)
'TableName = "任意のテーブル名(インポート先)"
DoCmd.TransferText acImportDelim, , TableName, FileName
今回は書いていませんが、エラー処理等を忘れずに。

No.3
- 回答日時:
変数を使用してファイルをインポートする方法は既に解答がでているようです。
しかし「任意のCSVファイルをAccessに取り込む」
のではなく、「定められたフォルダに規則性のあるファイル名で生成されるファイル」が対象のようです。それならば
1.一定間隔(一日一回?)フォルダを監視する。新しいファイル名があればデーターベースに取り込む
2.インポートフラッグの立っていないファイル名に対し、インポート処理を行い、処理日時を書き込み、インポートフラッグを立てる
このようにした方がデーターベースらしいし、取りこぼしのなさや、トラブル発生時に、色々解析しやすいのでは?
たしかにデータベースの基本的考え方だとそうかもしれません。ただ今回の場合処理の都合上どうしてもこの方法をとらないといけなかったので今回はこの方法で行く予定です!
また何かありましたらよろしくおねがいいたします。
No.1
- 回答日時:
できると思います。
ちょっとやってみたのでマクロコードを出しておきますね。
見れば大体わかりますよね?
filePath = "AT20070925.csv"
の記述を、日付関数を用いて置き換えてやればOKだと思います。
日付関数参考URL) http://www.geocities.jp/cbc_vbnet/function/date. …
「AT20070925 インポート定義」「AT20070925 リンク定義」は、一度手動でインポート/リンクを行い、
その時の設定を保存したものです。
==== Macro ====
Option Compare Database
'------------------------------------------------------------
' マクロ1
'
'------------------------------------------------------------
Function マクロ1()
On Error GoTo マクロ1_Err
Dim filePath As String
Dim dist As String
filePath = "AT20070925.csv"
dist = "table1"
DoCmd.TransferText acImportDelim, "AT20070925 インポート定義", dist, filePath
DoCmd.TransferText acLinkDelim, "AT20070925 リンク定義", "AT20070925", filePath
マクロ1_Exit:
Exit Function
マクロ1_Err:
MsgBox Error$
Resume マクロ1_Exit
End Function
==== end of Macro ====
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
ACCESSのSQLで、NULLかNULLでな...
-
最新の日付とその金額をクエリ...
-
Accessフォームで平均値の出し...
-
SQLPlusで 選手の誕生日を2017...
-
CSVファイルでテキストの改行の...
-
エクセルのフィルタ抽出が固まる
-
ファイルメーカーへネットワー...
-
Accessを開きなおすとテキスト...
-
同じテーブルをLEFT JOIN
-
テキストボックスにコントロー...
-
シャープレジスター エラーコード
-
エクセル 自動入力
-
manana というやつで、間違って...
-
Excel VBA 転記について
-
データ復旧にかかる時間
-
三好康之さんの参考書、データ...
-
半角ハイフンに似た文字
-
データベースの勉強 公務員を目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
ACCESSのSQLで、NULLかNULLでな...
-
CSVファイルでテキストの改行の...
-
エクセルのフィルタ抽出が固まる
-
最新の日付とその金額をクエリ...
-
Accessを開きなおすとテキスト...
-
警察はスマホに保存した動画や...
-
顧客データベースを作る場合、...
-
半角ハイフンに似た文字
-
更新クエリをリンクデータベー...
-
テキストボックスにコントロー...
-
シートが異なるセル同士を、相...
-
Excelフィルタ抽出で「検索して...
-
googleフォームでインストール...
-
Access フォーム上でコンボボッ...
-
Accessフォームからパラメータ...
-
DocuWorksでの印刷
-
構文エラー:演算子がありませ...
-
20万行あるデータを動かしたい
-
Access クエリ上で表示させた割...
おすすめ情報