MS Access VBA修改Excel工作表而不写入驱动器

不知道这个修复是否可能,但值得一试。

我有我的Access数据库中的VBA模块导出一些查询结果到预先存在的Excel工作表。 我没有问题在我的C:驱动器中创build一个新工作表,并填充查询结果。 但我需要能够修改现有的Excel工作表。

该数据库将被同一公司的许多用户使用。 他们将下载一个带有数据库的zip文件和一些带有表格和图表的Excel表格。 这些表将由来自Access的查询结果填充。

主要的问题是,与我目前的代码,我得到运行时错误3011其中Access无法find查询tempQ1 。 这是我的代码:(抱歉,如果它是凌乱的)

 Sub QueryExport() Dim db As DAO.Database Dim tempQ1 As DAO.QueryDef Dim tempQ2 As DAO.QueryDef Dim totalFindingsQuery As String Dim breakdownFindingsQuery As String Dim query1Name As String Dim query2Name As String query1Name = "tempQ1" query2Name = "tempQ2" Set db = CurrentDb totalFindingsQuery = "<SQL QUERY>" breakdownFindingsQuery = "<SQL QUERY>" Set tempQ1 = db.CreateQueryDef(query1Name, totalFindingsQuery) Set tempQ2 = db.CreateQueryDef(query2Name, breakdownFindingsQuery) 'filepath will change to variable to accomodate various users DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, queryName1, "C:\Documents\ <etc.>", True DoCmd.DeleteObject acQuery, "tempQ1" DoCmd.DeleteObject acQuery, "tempQ2" End Sub 

我看了这个https://social.msdn.microsoft.com/Forums/office/en-US/8cac5693-a620-4511-8784-2659904d6481/transfertext-runtime-error-3011?forum=accessdev,并find我的想法我的问题是 – 查看我的C:驱动器的属性,我只有“特殊权限”选中,我不认为我有写权限。 由于公司政策(我的用户都不能),我无法改变这种情况,所以我需要弄清楚如何修改本地驱动器上的Excel工作表而不需要写入权限。 这甚至有可能吗?

提前致谢

那么,发现你的错误,这是一个简单的:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, queryName1, "C:\Documents\ <etc.>", TruequeryName1replace为query1Name

并且为了将来的参考,在任何模块中包含Option Explicit以避免可变的拼写错误