如何在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。