使用VBA将Access数据库导出到现有的excel文档

时间:2018-06-22 15:59:32

标签: excel vba ms-access

因此,在搜索了许多其他页面之后,我仍然遇到困难,并且由于自学VBA而不得不承认,所以请原谅:(

我用表创建了一个简单的电话计数器访问表单。我的目标是按下一个按钮,它将表导出到现有XLSM的指定目录中(导出的数据将以当前日期作为工作表名称打开一个新工作表,然后保存它。

数据库位置在这里: L:\ Reports \ TestCalltoolmetric.accdb

现有的Excel文件在这里: L:\ Reports \ Callcounterreports \ MonthlyCallCounter.xlsm

到目前为止我一直在尝试...

1。

Dim strTable As String 
Dim strWorksheetPath As String
strWorksheetPath = "L:\Reports\Callcounterreports"
strWorksheetPath = strWorksheetPath & Format(Date, "ddmmmyy") & "Callreport.xlsx"

这会将我的数据库导出到一个新文件,该文件的名称为date + callreport。它可以工作,但我不知道我是否可以使用此命令来实现上述目标(文件名并不是很重要,但是在本月底我需要提供调用指标,因此我需要每天将所有内容导出到一个工作簿中,以便可以创建总计)。

2。 我尝试使用此:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Table1", "L:\Reports\Callcounterreports\MonthlyCallCounter.xlsm"

但是错误地指出Access数据库引擎找不到对象'Table1'

3。 我还通过一些愤怒的谷歌搜索找到了一个类似的请求,但是它是基于导出查询而来的...在一个没有受过良好教育的方式下,我试图对其进行调整,但从未真正能够使它工作。.

Dim appXL As Object
Dim wb As Object
Dim wks As Object
Dim xlf As String
Dim rs As DAO.Recordset

xlf = "L:\Reports\Callcounterreports\MonthlyCallCounter.xlsm" 'Full path to Excel file

Set rs = CurrentDb.OpenRecordset("Query1") 'Replace Query1 with real query name
Set appXL = CreateObject("Excel.Application")
Set wb = appXL.Workbooks.Open(xlf)
Set wks = wb.Sheets & Format (Date, "ddmmmyy") ' Sheet name


wb.Save
wb.Close
appXL.Quit
Set wb = Nothing
rs.Close
Set rs = Nothing

我知道到目前为止,我并不是第一个问到如何做到这一点的人,但是任何帮助都是很棒的!

1 个答案:

答案 0 :(得分:0)

SO ....经过进一步的挖掘,我发现至少使用

时我做错了什么

DoCmd.TransferSpreadsheet acExport,acSpreadsheetTypeExcel12Xml,“ Table1”,“ L:\ Reports \ Callcounterreports \ MonthlyCallCounter.xlsm”

我首先必须将表从“ Table1”重命名为另一个名称,然后选择“ DataTable”。 其次,我在命令的文件路径部分犯了一个错误,该位置是一个网络位置,显示了一个驱动器号。放置完整和正确的文件路径后,表单就像一个超级按钮一样工作。 https://msdn.microsoft.com/en-us/vba/access-vba/articles/docmd-transferspreadsheet-method-access 我使用这个网站来验证我的命令,现在我以前没有找到它感到很傻。 非常感谢@dbmitch,我认为挫败感对我有好处,而不是真正阅读错误信息。