同様の質問が発見できなかったため質問させて頂きます。
アクセスを利用して日々の電力監視のデータを管理しようと思います。
データを出力するシステムの都合で、日々のデータが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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【CSVファイル】先頭の文字列に...
-
100万行のCSVを10万行ずつのフ...
-
ThunderbirdのメールをCSVでま...
-
PSV形式ファイルをAccessにイン...
-
Access インポート
-
ACCESS ダイアログ キ...
-
アクセスでcsvに出力した際、頭...
-
accessで項目内の文字を自動改...
-
SQL*Loaderについて2
-
csvファイルのデータを既存のデ...
-
Access2007のエキスポートについて
-
CSVファイルのセルに「01」と入...
-
PL/SQLで文字列を分割
-
sqlldrのフィールドの属性について
-
アクセスクエリ(複数)→マクロ...
-
XMLデータを変換し印刷する方法
-
共有フォルダに誰が何にアクセ...
-
selectした結果の余計な余白を...
-
【Excel】[Expression.Error] ...
-
#1062 - '0' は索引 'PRIMARY' ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【CSVファイル】先頭の文字列に...
-
100万行のCSVを10万行ずつのフ...
-
TXTで作成したファイルをDATフ...
-
ThunderbirdのメールをCSVでま...
-
Access インポート
-
アクセスでcsvに出力した際、頭...
-
タブ区切りデータからダブルコ...
-
カンマがデータとして入ってるC...
-
Access2007のエキスポートについて
-
accessで項目内の文字を自動改...
-
csvファイルが保存すると数...
-
Access95のエクスポートで教え...
-
アクセスがインポートできる容...
-
txtをemlに変換したい!
-
CSVファイルのセルに「01」と入...
-
エクセルデータをテキストファ...
-
Accessでdatファイルのインポート
-
VBAでMSアクセスに、Tab区切り...
-
sqlldrのフィールドの属性について
-
複数のテキストファイルをエク...
おすすめ情報