在Excel中运行macros而不打开Access

我有一个Excel数据写入数据的Excel程序。 在这个数据库中,我有一个macros,运行时将数据复制到另一个excel文件中。 我想编辑原始的excel程序,以便在将数据写入Access数据库之后,它会自动运行macros。 现在,我已经把它设置成将数据写入数据库,然后打开数据库,运行macros,然后closures数据库 – 这似乎有些不够用。 以下是访问数据库中的macros:

Sub copy() Dim strTable As String Dim strWorksheetPath As String strWorksheetPath = "FilePath" & "test.xlsx" strTable = "test" DoCmd.OutputTo acOutputTable, strTable, acFormatXLSX, strWorksheetPath End Sub 

程序中的相关代码只是打开数据库,调用macros并closures它。 如果有办法解决这个问题,不用打开数据库就好了。 谢谢。

即只是为了说清楚,我正在寻找一种方法来模仿上述代码在Excel中,所以我不需要打开访问数据库在所有即无论如何将数据从访问传输到Excel工作簿,没有使用访问VBA。

我想我明白你在问什么,但如果我误解了,请纠正我。

您可以将此代码插入到Excel工作簿中 – 将所需的引用添加到Microsoft Office 14.0 Access database engine Object Library (在工具|引用下)并更改variables以匹配您的参数。

你还应该添加错误检查

 Option Explicit Public Sub SaveAccessTableToXL() ' Under References, Add This ' Microsoft Office 14.0 Access database engine Object Library Dim db As DAO.Database Dim rs As DAO.Recordset Dim wb As Workbook Dim ws As Worksheet Dim rge As Range Dim strDatabase As String Dim strTable As String Dim strWorksheetPath As String ' These are variables you need to set before running strDatabase = "c:\databases\heatlink\linktest.accdb" strWorksheetPath = "c:\databases\heatlink\" & "test.xlsx" strTable = "tbl_areas" ' Create New Workbook Set wb = Workbooks.Add() Set ws = wb.Sheets("Sheet1") Set rge = ws.Range("A1") ' Get Table Data from Database Set db = DBEngine.OpenDatabase(strDatabase) Set rs = db.OpenRecordset(strTable, dbOpenDynaset, dbReadOnly) ' Copy Recordset into Worksheet rge.CopyFromRecordset rs rs.Close ' Save Workbook wb.SaveAs strWorksheetPath wb.Close MsgBox "Workbook Created: " & strWorksheetPath Set wb = Nothing Set ws = Nothing Set rge = Nothing Set rs = Nothing Set db = Nothing End Sub