首先,我必须承认,我没有受过VBA编码的培训.我使用MS Access宏和查询来构建我的应用程序.我使用一些临时导入文件,并且需要运行一个宏或一些VBA来测试它们是否存在,然后如果它们存在,则删除它们.
我的表名是"TempImport1"
我通过谷歌搜索研究了这个,并且遇到了一些可能有效的VBA,但我想知道如何将代码放入模块或点击子按钮.我过去在按钮功能下剪切/粘贴了VBA代码,但它确实有效,但我无法弄清楚为什么这次没有工作.
老实说,我确信这是我对私人与公共职能缺乏了解,当然还有我不了解VBA的事实.
这是我正在努力工作的代码:
Function IsTable(sTblName As String) As Boolean
'does table exists and work ?
'note: finding the name in the TableDefs collection is not enough,
' since the backend might be invalid or missing
On Error GoTo TrapError
Dim x
x = DCount("*", sTblName)
IsTable = True
Exit Function
TrapError:
Debug.Print Now, sTblName, Err.Number, Err.Description
IsTable = False
End Function
Run Code Online (Sandbox Code Playgroud)
首先,您应该检查表是否存在,然后您应该尝试关闭它(如果存在).然后,您应该将警告设置为False,因此它不会询问您是否确定要删除该表.
在下面的示例中,您将删除Table3
.在If Not IsNull
被检查表是否存在:
Option Compare Database
Option Explicit
Public Sub DeleteIfExists()
Dim tableName As String
tableName = "Table3"
If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & tableName & "'")) Then
DoCmd.SetWarnings False
DoCmd.Close acTable, tableName, acSaveYes
DoCmd.DeleteObject acTable = acDefault, tableName
Debug.Print "Table" & tableName & "deleted..."
DoCmd.SetWarnings True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
几乎代码应该工作.
要删除TempImport1表(如果存在),只需使用以下函数。
Function DeleteTables()
If Not IsNull(DLookup("Name", "MSysObjects", "Name='TempImport1' AND Type = 1")) Then
DoCmd.DeleteObject acTable, "TempImport1"
End If
End Function
Run Code Online (Sandbox Code Playgroud)
创建函数后,创建一个宏,添加操作运行代码,然后输入DeleteTables()
函数名称。
然后,您可以运行一个宏来删除该表(如果它存在)。
归档时间: |
|
查看次数: |
18996 次 |
最近记录: |