将Access查询导出到现有Excel工作簿(包含宏)

将Access查询导出到现有Excel工作簿(包含宏),excel,vba,ms-access,Excel,Vba,Ms Access,关于Stackoverflow的第一个问题,很长一段时间以来,我们一直在使用该网站作为查看器 我需要将一个查询从Access 2010导出到现有的Excel 2010工作簿中,该工作簿可以是.xlsm或.xlsb(因为宏在这两种工作簿中都可以工作)。我用以下方法设置它: 用户单击Excel工作簿中的按钮以刷新选项卡 -->这将在Excel中运行VBA,并调用Access中的宏来运行 --->Access中的宏仅调用Access中的现有查询来运行并将结果导出回初始Excel工作簿 访问宏代码:

关于Stackoverflow的第一个问题,很长一段时间以来,我们一直在使用该网站作为查看器

我需要将一个查询从Access 2010导出到现有的Excel 2010工作簿中,该工作簿可以是.xlsm或.xlsb(因为宏在这两种工作簿中都可以工作)。我用以下方法设置它:

  • 用户单击Excel工作簿中的按钮以刷新选项卡
    -->这将在Excel中运行VBA,并调用Access中的宏来运行 --->Access中的宏仅调用Access中的现有查询来运行并将结果导出回初始Excel工作簿
访问宏代码:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Data_SlotView", "M:\Merch. Strategy\Merch Forecasting\Automotive Division\File Sharing\Automotive Deal-Page-Slot View\Deal-Page-Slot-View.xlsb"

如果我的Excel文件是.xlsx,我的代码就可以工作,但显然Access 2010不允许使用宏导出到Excel文件,因此我必须使用某种变通方法

您可以尝试使用Access中的
插入
查询:

CurrentDb.Execute "INSERT INTO [Excel 12.0 Macro;HDR=Yes;DATABASE=M:\Merch. Strategy\Merch Forecasting\Automotive Division\File Sharing\Automotive Deal-Page-Slot View\Deal-Page-Slot-View.xlsm].[Sheet1$] SELECT * FROM Data_SlotView;"

我只是测试了一下,它对我来说很好。我认为你不需要另一种方法;最好弄清楚你正在试的那个有什么问题。您是否收到错误?…另外,您基于什么
“显然Access 2010不允许使用宏导出到Excel文件”
?你是在什么地方读到的还是猜测?如果工作簿当前处于打开状态,我认为你不能“导出到Excel工作簿”,是吗?你应该获得一些文件权限或“无法打开文件”错误。我测试了很多方法,是的。您是否尝试导出到其他文件?@ashleedawg文件名后面的[GROUP]不是我所认为的意思。这仅仅意味着选择了多个Excel工作表,只要我只选择一个工作表,它就会消失。我将有问题的原始文件移动到我的桌面(本地驱动器),但代码仍然没有为其运行。这真是令人沮丧。有趣的测试:。。。我的理论是它不会起作用,因为文件传输方法不是问题所在。无论如何,正确的方法是从Excel导入,而不是导出到Excel。这两种方法都应该有效,但可以。我对这个很好奇,因为我可能已经用了一百万次了。。。我惊讶地发现,如果Excel文件是打开的,它甚至可以为我工作。我可以看到数据被删除和替换,就好像它是一个DB表一样。我很确定这以前不管用。