我正在寻找与发布以下问题的人完全相同的东西:
这个答案:
Dim Db As DAO.Database, qdef AS DAO.QueryDef, rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT DISTINCT [CustomerName] FROM [QueryName]")
Do While Not rst.EOF
Set qdef = db.QueryDefs("[MyTempQuery]")
qdef.SQL = "SELECT * FROM [QueryName] WHERE Customer = '" & rst!CustomerName & "'"
Set qdef = Nothing
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "MyTempQuery", _
"C:\Path\To\Excel\Files\" & rst!CustomerName & ".xlsx", True
rst.MoveNext
Loop
rst.Close
Set rst = Nothing: Set db = Nothing
...由 @Parfait 提供,创造了奇迹,但由于此访问文件将由其他几个人使用,我现在需要将文件导出到与访问文件相同的文件夹的子文件夹中,而不是指定一个代码中的确切文件夹路径。有人可以帮我吗?
提前谢谢大家!
我不确定我是否正确回答了你的问题。您的意思是:
a) 宏有多个用户,并且相关数据库位于共享驱动器上:
--> 如果是这种情况:只需将“C:\Path\To\Excel\Files”更改为共享驱动器的路径即可。
b) 如果没有共享驱动器并且宏恰好在本地使用:使用“C:\Temp”作为路径。该文件夹存在于每台 Windows 计算机上。这样您就可以确保找到路径并且可以保存文件。
我找到了解决方案。基本上我将变量声明为字符串,然后使用该变量来存储访问文件的位置。然后我在该位置创建了一个文件夹并将其用作导出目标。
Dim Db As DAO.Database, qdef AS DAO.QueryDef, rst As DAO.Recordset, expPath As String
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT DISTINCT [CustomerName] FROM [QueryName]")
expPath = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name)))
MkDir expPath & "EXPORT"
Do While Not rst.EOF
Set qdef = db.QueryDefs("[MyTempQuery]")
qdef.SQL = "SELECT * FROM [QueryName] WHERE Customer = '" & rst!CustomerName & "'"
Set qdef = Nothing
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "MyTempQuery", _
expPath & "EXPORT\" & rst!CustomerName & ".xlsx", True
rst.MoveNext
Loop
rst.Close
Set rst = Nothing: Set db = Nothing
下午好,
我没有接受过 VBA 培训。但我正在尝试使用它,类似于上面的请求,将唯一的 Excel 文件导出到数据集中每个唯一供应商代码的文件夹中。 我有表、查询和表单中的数据。
基本上,上述 VBA 的任何部分都显示“QueryName”和“CustomerName”以匹配我的数据库。我还添加了文件路径,我希望将文件放置在“导出”之后。最后,我什至制作了一个“MyTempQuery”,即使我不知道该功能。
我尝试了上述方法,但不起作用。 有没有人可以引导我完成它,因为我可能不知道我可能需要进行的所有修改来匹配我的数据库?
很高兴此时接到 Teams 电话或其他任何事情......