Access VBAスクリプトがあります
- ディレクトリ内の Excel スプレッドシートのリストをループします
- 各スプレッドシートの各シートをループします
- シートから Access テーブルにデータをインポートします
もう 1 つのステップを追加したいと思います。
Field1
列 の Excel 値を Access テーブル の値のリストと比較しExclude
、一致が見つかった場合は Excel の行全体を削除します。
以下は簡略化されたコードで、新しいコードの配置場所を示す注記が付いています。
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM FileList")
rs.MoveFirst
Dim appExcel As Excel.Application
Set appExcel = New Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objSheet As Excel.Worksheet
Do Until rs.EOF = True
strFilePath = rs!FilePath
Set objWorkbook = appExcel.Workbooks.Open(strFilePath)
For Each objSheet In objWorkbook.Sheets
objSheet.Select
strQuery =
"INSERT INTO tblImport (Field1)
SELECT [Field1]
FROM [Excel 8.0;HDR=YES;DATABASE=" & strFilePath & "].[" & objSheet.Name & strRange & "]"
CurrentDb.Execute strQuery, dbFailOnError
***Add Code Here to Delete Rows in Excel where value found in Exclusion table***
Next objSheet
Set objSheet = Nothing
objWorkbook.SaveAs FileName:=strFilePath, FileFormat:=xlExcel8
objWorkbook.Close SaveChanges:=False
Set objWorkbook = Nothing
rs.MoveNext
Loop
別の RecordSet を Dim する必要があると確信しています。
Dim rsExclude AS Recordset
Set rsExclude = CurrentDb.OpenRecordset("SELECT * FROM Exclude")
じゃあ何?または、誰かが別のアプローチを推奨できますか?