• ベストアンサー

マイクロソフトアクセス2007

あるフォルダにエクセルのファイル"A"があります。 この"A"はほぼ毎日更新され内容が新しくなっていきます。 アクセスで、このエクセルのファイルをインポートし、あるテーブルの最後のレコードの下に追加したいのですが、クリック1つでこの動作を行える様にしたいです。 しかし、この"A"が以前インポートした時から更新されていれば、インポートをし、以前インポートした時から更新されていなければ、インポートをしない様にしたいのです。でないと、クリックした時に、以前と同じデータを追加してしまうので、新しいデータだけを追加できる様にできますか? この"A"は会社の他部署が更新していき、又、アクセス側でインポートをするのもバイトの方が行うので、この様にミスができない様にしたいのです。誰か教えて下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

アクセスのマクロでインポートするのではなくExcelのマクロでアクセスにデータを収める方法です。 dailydataが"A"です。 マクロは別のExcelファイル(dailyupdate.xlsとでもしておいてください) Sub Updatecheck()   Dim FSysObj As Object   Dim inppath As String   Dim DBpath As String   Dim inpfile As Object   Dim DBfile As Object   inppath = "D:\ddd\daylydata.xls"   DBfile = "D:\ddd\業務DB.mdb"   Set FSysObj = CreateObject("Scripting.FileSystemObject")   Set inpfile = FSysObj.GetFile(inppath)   Set outfile = FSysObj.GetFile(outpath)   If inpfile.DateLastModified < outfile.DateLastModified Then       DOupdate_proc   End If   Application.DisplayAlerts = False   Application.Quit End Sub Sub DOupdate_proc()   Dim DB接続 As ADODB.Connection   Dim DB接続str As String   Dim 累積TBL As Recordset   Dim inppath As String   Dim outpath As String   inppath = "D:\ddd\daylydata.xls"   outpath = "D:\ddd\業務DB.mdb"   Workbooks.Open inppath   ここでADOを使ってaccessのテーブルに追加    End Sub

doradora64
質問者

お礼

丁寧な回答ありがとうございます。 私は無知なので、ADOという物がいまいちよくわかりません。 検索し、調べてみたのですが、あまりよくわかりませんでした。

その他の回答 (2)

回答No.3

回答2です。 >しかし、この"A"が以前インポートした時から更新されていれば、インポートをし、以前インポートした時から更新されていなければ、インポートをしない様にしたいのです。 これでは、「以前と同じデータを追加してしまう」ことを防げません。ファイルAにインポート済みのデータがあるからです。 同じデータを追加しないためには、ファイルAのデータをインポートする度にファイルAの中味を消去しておく必要があります。 ただ、これにしても人のやることですから、テーブルにあるデータと同じものをまた入力しないという保障はありません。 ですから結局は、ファイルAとテーブルデータの突合せが必要になります。どちらにしてもファイルの更新日付で判断できるものではありません。 なお、accessをメインにした考え方としては、 ・本番用と同じフィールドを持つ作業用テーブルを用意し、ファイルAのデータを作業テーブルにインポートする。 ・両テーブルから不一致分クエリを作成して本番にないデータを抽出し、本番テーブルに追加。 ・作業テーブルのデータを削除 という感じです。 これらをマクロ登録しておけばいいでしょう。

doradora64
質問者

補足

なるほど、言われてみれば確かにインポート済みのデータを追加してしましますね。 クリック一つで、"A"からデータをインポートし、クエリを作成し本番テーブルに追加し、作業テーブルのデータを削除する事は可能ですか? これらは簡単にできますか?教えて下さい。お願いします。

回答No.2

どのフィールドの組み合わせが一致すると「同じデータ」と見なすのか、について具体的に書かれていないので具体的な回答は困難です。 一般的には、入力日時などのフィールがない限り、ファイルAのレコードとテーブルのデータを1件1件突き合せないと無理でしょう。