こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2009-10-24 00:48:18

QNo.5391636

困ってます

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

アクセスのマクロでインポートするのではなく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

投稿日時 - 2009-10-24 03:51:58

お礼

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

投稿日時 - 2009-10-24 14:20:27

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

回答2です。

>しかし、この"A"が以前インポートした時から更新されていれば、インポートをし、以前インポートした時から更新されていなければ、インポートをしない様にしたいのです。

これでは、「以前と同じデータを追加してしまう」ことを防げません。ファイルAにインポート済みのデータがあるからです。

同じデータを追加しないためには、ファイルAのデータをインポートする度にファイルAの中味を消去しておく必要があります。
ただ、これにしても人のやることですから、テーブルにあるデータと同じものをまた入力しないという保障はありません。
ですから結局は、ファイルAとテーブルデータの突合せが必要になります。どちらにしてもファイルの更新日付で判断できるものではありません。

なお、accessをメインにした考え方としては、
・本番用と同じフィールドを持つ作業用テーブルを用意し、ファイルAのデータを作業テーブルにインポートする。
・両テーブルから不一致分クエリを作成して本番にないデータを抽出し、本番テーブルに追加。
・作業テーブルのデータを削除
という感じです。
これらをマクロ登録しておけばいいでしょう。

投稿日時 - 2009-10-24 12:14:42

補足

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

投稿日時 - 2009-10-24 14:20:42

ANo.2

どのフィールドの組み合わせが一致すると「同じデータ」と見なすのか、について具体的に書かれていないので具体的な回答は困難です。

一般的には、入力日時などのフィールがない限り、ファイルAのレコードとテーブルのデータを1件1件突き合せないと無理でしょう。

投稿日時 - 2009-10-24 10:52:39

あなたにオススメの質問