Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 删除MS Access中除一个表以外的所有表(2007-2013)_Ms Access_Vba - Fatal编程技术网

Ms access 删除MS Access中除一个表以外的所有表(2007-2013)

Ms access 删除MS Access中除一个表以外的所有表(2007-2013),ms-access,vba,Ms Access,Vba,我正在尝试删除除Access中的一个表之外的所有表。这是在本地完成的,因此没有链接表和关系。我要保存的表格是“日志”(历史记录) 我打算删除三个表和两个导入错误表。这是一个每月一次的过程,每个月导入错误表的名称可能会有所不同,因此一些菊花链的删除表“Table1_Importers”查询不一定有效 代码似乎不适用,因为我只能真正命名我想要保留的表(这将指定表按名称删除-在导入错误的情况下,我不会有这样的名称) 我目前拥有的是: -dbo.1表 -表2 -表3 -dbo.T2Sheetname\u

我正在尝试删除除Access中的一个表之外的所有表。这是在本地完成的,因此没有链接表和关系。我要保存的表格是“日志”(历史记录)

我打算删除三个表和两个导入错误表。这是一个每月一次的过程,每个月导入错误表的名称可能会有所不同,因此一些菊花链的删除表“Table1_Importers”查询不一定有效

代码似乎不适用,因为我只能真正命名我想要保留的表(这将指定表按名称删除-在导入错误的情况下,我不会有这样的名称)

我目前拥有的是:

-dbo.1表

-表2

-表3

-dbo.T2Sheetname\u进口商

-dbo.T3表名\进口商

-日志

-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

以下是谷歌搜索“所有表的msaccess”和“msaccess vba删除表”等短语的结果。使用谷歌,它是你的朋友

根据msgbox sez的内容,您可能需要在“dbo.Log”或“Log”上进行筛选

来自https://stackoverflow.com/questions/17555174/how-to-loop-through-all-tables-in-an-ms-access-db Dim数据库作为DAO.Database 将tdf调暗为DAO.TableDef Set db=CurrentDb 对于以db.TableDefs为单位的每个tdf '忽略系统和临时表 如果不是(tdf.name如“MSys*”或tdf.name如“~*”),则 如果tdf.name为“Log”,则 MsgBox(“删除”&tdf.name) “从https://stackoverflow.com/questions/15945297/what-is-the-difference-between-docmd-deleteobject-actable-vs-drop-table 'DoCmd.DeleteObject可执行,tdf.name 如果结束 如果结束 下一个 设置tdf=无 Set db=Nothing
谢谢您的回复。我试着在谷歌上搜索这个问题,我也找到了答案。正如这里实现的,代码不能正常运行。它在一个对话框(MsgBox)中为许多项目提供通知消息,但实际上并没有删除任何项目。我知道的还不够多,无法分析出什么不起作用。我没有收到任何错误消息,只收到来自MsgBox的通知。@TJ15是的,它会为验证测试提供消息。我希望您在实际运行它之前,确保找到并选择了正确的表进行删除。准备好后,将MsgBox更改为Debug.Print并从“DoCmd”行中删除注释标记,以实际执行删除操作。
'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