我正在尝试删除除Access中的一个表以外的所有表。这是在本地完成的,因此没有链接表,也没有关系。我要保留的表是“ Log”(历史记录)。
我打算删除三个表和两个导入错误表。这是一个每月过程,导入错误表的命名每个月可能有所不同,因此,一些菊花链式DROP TABLE“ Table1_ImportErrors”查询不一定有效。
代码here似乎不适用,因为我只能真正命名要保留的表(这表示要按名称删除的表-在导入错误的情况下,我不会这样做)
我目前拥有的是:
-dbo.Table1
-dbo.Table2
-dbo.Table3
-dbo.T2Sheetname_ImportErrors
-dbo.T3Sheetname_ImportErrors
-dbo.Log
-9查询
-4宏
-2个模块
我想保留所有查询,宏,模块和dbo.Log。
我正在学习VBA,但不清楚在这里做什么。在这里也可以使用查询或其他方法。感谢您的投入,很高兴回答任何问题。
编辑:以下内容对我有用。
Private Sub
DoCmd.DeleteObject acTable, "Table1"
DoCmd.DeleteObject acTable, "Table2"
DoCmd.DeleteObject acTable, "Table3"
Dim tdf as TableDef
For Each tdf In CurrentDb.TableDefs
If Right(tdf.Name, 12) = "ImportErrors" Then
DoCmd.DeleteObject acTable, tdf.Name
End If
Next tdf
End Sub
答案 0 :(得分:1)
以下是搜索某些短语(例如“所有表的msaccess”和“ msaccess vba删除表”)的结果。使用Google,这是您的朋友。
取决于msgbox sez的内容,您可能需要过滤“ dbo.Log”或“ Log”。
'From https://stackoverflow.com/questions/17555174/how-to-loop-through-all-tables-in-an-ms-access-db
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
' ignore system and temporary tables
If Not (tdf.name Like "MSys*" Or tdf.name Like "~*") Then
If tdf.name <> "Log" Then
MsgBox("deleting " & tdf.name)
' from https://stackoverflow.com/questions/15945297/what-is-the-difference-between-docmd-deleteobject-actable-vs-drop-table
'DoCmd.DeleteObject acTable, tdf.name
End If
End If
Next
Set tdf = Nothing
Set db = Nothing