如何在Excel VBA中加入从两个不同数据源创建的两个记录集

阿比舍克·史里兰(Abhishek Shrirang)

我的方案是-我在.xls文件中有一组数据,在oracle数据库表中有另一组数据。我想使用excel vba导入两个数据,然后执行连接(类似sql),最后将数据保存在某些工作簿中。

问题-我不知道如何在vba中获取两组不同的数据,然后执行连接。在.Net中,有一个DataSet对象,我们可以在其中保存导入的数据,然后对它执行任何查询,但是vba如何做到这一点?

煎蛋卷

考虑以下使用ADO的示例。该代码允许从单个SQL查询(Jet SQL)中的多个数据源获取数据,特别是从.xlsx文件进行联合,并将结果记录集放到工作表中。不幸的是,我没有可用的Oracle数据源进行测试,尽管您也可以通过Oracle ODBC驱动程序使用ADO(与任何其他数据库一样)直接连接到Oracle

该代码位于Query.xlsm

Option Explicit

Sub SqlUnionTest()

    Dim strConnection As String
    Dim strQuery As String
    Dim objConnection As Object
    Dim objRecordSet As Object

    strConnection = _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "User ID=Admin;" & _
        "Data Source='" & ThisWorkbook.FullName & "';" & _
        "Mode=Read;" & _
        "Extended Properties=""Excel 12.0 Macro;"";"

    strQuery = _
        "SELECT * FROM [Sheet1$] " & _
        "IN '" & ThisWorkbook.Path & "\Source1.xlsx' " & _
        "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _
        "UNION " & _
        "SELECT * FROM [Sheet1$] " & _
        "IN '" & ThisWorkbook.Path & "\Source2.xlsx' " & _
        "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _
        "UNION " & _
        "SELECT * FROM [Sheet1$] " & _
        "IN '" & ThisWorkbook.Path & "\Source3.xlsx' " & _
        "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _
        "ORDER BY ContactName;"

    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open strConnection
    Set objRecordSet = objConnection.Execute(strQuery)
    RecordSetToWorksheet Sheets(1), objRecordSet
    objConnection.Close

End Sub

Sub RecordSetToWorksheet(objSheet As Worksheet, objRecordSet As Object)

    Dim i As Long

    With objSheet
        .Cells.Delete
        For i = 1 To objRecordSet.Fields.Count
            .Cells(1, i).Value = objRecordSet.Fields(i - 1).Name
        Next
        .Cells(2, 1).CopyFromRecordset objRecordSet
        .Cells.Columns.AutoFit
    End With

End Sub

注意,路径中ThisWorkbook.Path不能包含'否则,您必须通过更换逃脱他们'''

在和相同的文件夹中,还有三个数据源文件Query.xlsm

Source1.xlsx

源1.xlsx

Source2.xlsx

Source2.xlsx

Source3.xlsx

Source3.xlsx

结果工作表如下:

Query.xlsm结果

它适用于我的64位版本Excel 2013。为了使其.xls与Excel 2003(ACE.OLEDB.12.0未安装提供程序)兼容,您必须替换Provider=Microsoft.ACE.OLEDB.12.0;Provider=Microsoft.Jet.OLEDB.4.0;,以及扩展属性Excel 12.0 Macro;/Excel 12.0;中的Excel 8.0;您可以轻松地将WHERE子句和其他SQL内容添加到查询中。实际上,连接对象的数据源并不仅限于Query.xlsm代码所在的唯一文件。它可以是另一个数据源,它与可用的提供程序之一兼容,无论是基于文件的还是基于服务器的。http://www.connectionstrings.com/上为您的数据源查找更多连接字符串

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PHP中加入两个多维数组

来自分类Dev

如何在sqlalchemy中加入两个KeyedTuple对象?

来自分类Dev

如何加入两个或多个Wordpress RSS源?

来自分类Dev

我如何用两个数据源创建一个UITableView

来自分类Dev

如何在MongoDB中加入两个聚合结果?

来自分类Dev

如何在Strongloop Loopback框架中为模型配置两个不同的数据源?

来自分类Dev

如何在Scala中加入两个列表?

来自分类Dev

如何在猫鼬中加入两个收藏

来自分类Dev

如何在nestjs中加入两个模式?

来自分类Dev

如何获得两个两个元素数据集之间的不同对象?

来自分类Dev

如何在PHP中加入两个多维数组

来自分类Dev

如何在Excel中使用两个系列的序数/名义数据创建折线图?

来自分类Dev

我如何在mysql中加入两个不同的表

来自分类Dev

如何在bash脚本中加入两个条件?

来自分类Dev

如何在Excel中创建具有两个Y轴且值不同的图形

来自分类Dev

如何在C#中加入两个列表?

来自分类Dev

如何在Word MailMerge中使用两个访问数据源

来自分类Dev

如何从两个熊猫数据框中加入单元格值?

来自分类Dev

如何在linux中加入两个文件?

来自分类Dev

如何使用函数绘制两个不同的数据集?

来自分类Dev

如何在php中加入两个mysql表

来自分类Dev

如何在mysql数据库中加入两个表并获取记录。?

来自分类Dev

如何在 Spring Boot 和 Spring Data 中使用两个 Cassandra 数据源?

来自分类Dev

Youtube Data Studio,如何从两个不同的数据源(例如两个 BigQuery 表)创建计算字段

来自分类Dev

Excel VBA 从要在列表中使用的两个不同范围创建名称(数据验证)

来自分类Dev

如何在mysql中加入两个表,但两者之间的日期不同?

来自分类Dev

如何在mysql中加入两个表记录

来自分类Dev

MS Access - 如何在一个记录集中聚合两个查询?

来自分类Dev

如何从laravel中的两个表中加入和获取数据?

Related 相关文章

  1. 1

    如何在PHP中加入两个多维数组

  2. 2

    如何在sqlalchemy中加入两个KeyedTuple对象?

  3. 3

    如何加入两个或多个Wordpress RSS源?

  4. 4

    我如何用两个数据源创建一个UITableView

  5. 5

    如何在MongoDB中加入两个聚合结果?

  6. 6

    如何在Strongloop Loopback框架中为模型配置两个不同的数据源?

  7. 7

    如何在Scala中加入两个列表?

  8. 8

    如何在猫鼬中加入两个收藏

  9. 9

    如何在nestjs中加入两个模式?

  10. 10

    如何获得两个两个元素数据集之间的不同对象?

  11. 11

    如何在PHP中加入两个多维数组

  12. 12

    如何在Excel中使用两个系列的序数/名义数据创建折线图?

  13. 13

    我如何在mysql中加入两个不同的表

  14. 14

    如何在bash脚本中加入两个条件?

  15. 15

    如何在Excel中创建具有两个Y轴且值不同的图形

  16. 16

    如何在C#中加入两个列表?

  17. 17

    如何在Word MailMerge中使用两个访问数据源

  18. 18

    如何从两个熊猫数据框中加入单元格值?

  19. 19

    如何在linux中加入两个文件?

  20. 20

    如何使用函数绘制两个不同的数据集?

  21. 21

    如何在php中加入两个mysql表

  22. 22

    如何在mysql数据库中加入两个表并获取记录。?

  23. 23

    如何在 Spring Boot 和 Spring Data 中使用两个 Cassandra 数据源?

  24. 24

    Youtube Data Studio,如何从两个不同的数据源(例如两个 BigQuery 表)创建计算字段

  25. 25

    Excel VBA 从要在列表中使用的两个不同范围创建名称(数据验证)

  26. 26

    如何在mysql中加入两个表,但两者之间的日期不同?

  27. 27

    如何在mysql中加入两个表记录

  28. 28

    MS Access - 如何在一个记录集中聚合两个查询?

  29. 29

    如何从laravel中的两个表中加入和获取数据?

热门标签

归档