如何在Access中使用VBA清除表格?
我想要做的是,在Excel中,使用VBA将数据推送到现有的Access表。 我已经能够做到这一点,但我有一个小小的打嗝。 在我推送数据以进行访问之前,我想清除Access表中的当前数据,所以当来自Excel的新数据进入时,它是Access表中唯一的数据。 我真的不知道如何编写Access的代码,因为这个类已经在VBA for Excel上了。 我尝试了几种不同的方法,每次都不起作用。 例如,看起来应该工作的代码是
DoCmd.RunSQL "DELETE tblName.* FROM CoversheetTableFourthAttempt
但我得到一个错误告诉我定义一个对象。
如果你可以帮助我,我会真的appricate它
我已经把我的代码放在下面供参考。
Sub AccessFourthMonth() Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long ' connect to the Access database Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=C:\Users\Kent\Documents\MBA\Winter 2009 Semester\MBA 614\Final Project\shilded\testdatabase.mdb" ' open a recordset Set rs = New ADODB.Recordset rs.Open "CoversheetTableFourthAttempt", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all records in a table r = 2 ' the start row in the worksheet Do While Len(Range("A" & r).Formula) > 0 ' repeat until first empty cell in column A With rs .AddNew ' create a new record ' add values to each field in the record .Fields("Project") = Range("A" & r).Value .Fields("Description") = Range("B" & r).Value .Fields("Amount") = Range("C" & r).Value .Fields("Date") = Range("D" & r).Value .Update ' stores the new record End With r = r + 1 ' next row Loop rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
尝试
DoCmd.RunSQL "DELETE * FROM TableName"
这篇文章可能是有趣的: 在VBA代码中执行SQL语句
从Excel中尝试以下操作:
dim cn as adodb.connection dim cmd as adodb.command set cn = new adodb.connection cn.open "put your connection string here" set cmd = new adodb.command cmd.commandtype = adcmdtext cmd.commandtext = "Delete * from myTable" cmd.activeconnection = cn.connectionstring cmd.execute
DoCmd在Access应用程序内部,不被Excel应用程序识别。 解决您的问题的简单方法是从Excel本身启动删除查询。
在cn.Open“Provider ..行后添加这部分
cn.Execute "DELETE * FROM CoversheetTableFourthAttempt"
这应该在填充数据运行的下一部分之前清除表格。
您的DoCmd
方法有两个问题。 您使用了一个报价来开始一个string,但没有包括一个结束报价。 但即使正确的引用,您的DoCmd
将无法正常工作,因为Excel不知道CoversheetTableFourthAttempt是Access数据库中的表的名称。
您显示您可以成功创build一个ADO连接到您的Access数据库。 所以我的build议是使用连接对象的Execute
方法来执行你的SQL语句:
cn.Execute "DELETE FROM CoversheetTableFourthAttempt;"
最后,请访问Access中的问题名称和保留字,以了解为什么date , 说明和项目不是访问字段名称的好select。