1 根据字段值对多个Excel文件进行访问查询

问题描述 投票:0回答:3

我正在寻找与发布以下问题的人完全相同的东西:

1 MS Access 根据字段值查询多个Excel文件

这个答案:

    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 提供,创造了奇迹,但由于此访问文件将由其他几个人使用,我现在需要将文件导出到与访问文件相同的文件夹的子文件夹中,而不是指定一个代码中的确切文件夹路径。有人可以帮我吗?

提前谢谢大家!

vba ms-access
3个回答
0
投票

我不确定我是否正确回答了你的问题。您的意思是:

a) 宏有多个用户,并且相关数据库位于共享驱动器上:

--> 如果是这种情况:只需将“C:\Path\To\Excel\Files”更改为共享驱动器的路径即可。


b) 如果没有共享驱动器并且宏恰好在本地使用:使用“C:\Temp”作为路径。该文件夹存在于每台 Windows 计算机上。这样您就可以确保找到路径并且可以保存文件。


0
投票

我找到了解决方案。基本上我将变量声明为字符串,然后使用该变量来存储访问文件的位置。然后我在该位置创建了一个文件夹并将其用作导出目标。

    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

0
投票

下午好,

我没有接受过 VBA 培训。但我正在尝试使用它,类似于上面的请求,将唯一的 Excel 文件导出到数据集中每个唯一供应商代码的文件夹中。 我有表、查询和表单中的数据。

基本上,上述 VBA 的任何部分都显示“QueryName”和“CustomerName”以匹配我的数据库。我还添加了文件路径,我希望将文件放置在“导出”之后。最后,我什至制作了一个“MyTempQuery”,即使我不知道该功能。

我尝试了上述方法,但不起作用。 有没有人可以引导我完成它,因为我可能不知道我可能需要进行的所有修改来匹配我的数据库?

很高兴此时接到 Teams 电话或其他任何事情......

© www.soinside.com 2019 - 2024. All rights reserved.