在Mac中对Excel工作表进行SQL查询

时间:2016-11-02 19:48:51

标签: vba excel-vba oledb excel-vba-mac excel

我已经通过oledb连接在Windows PC上的Excel 2016中编写了一个宏。但它在我的Mac上不起作用。我该怎么办呢?通常,在Windows中,您可以选择工具>引用和检查oledb连接,但Excel Mac中没有工具选项。我不知道代码在这里很重要,但无论如何我都会分享它。

Dim sorgu1 As String
Dim con As Object, rs As Object
    Set con = CreateObject("adodb.connection")
    Set rs = CreateObject("adodb.recordset")
    con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
    ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

    makine = Sheets("Dashboard").Cells(2, 11).Value

    sorgu1 = "select [Resource Id], [Order No], Sum(([Bitim Zamani]-[Basl Zamani])*1440)" 'as Plansiz, Sum(([Bitim Zamani]-[Basl Zamani])*1440)as Planli, Sum([Qty]) as Uretim"
    sorgu1 = sorgu1 + " from [Data$] where [Resource Id] = " + "'" + makine + "'"
    sorgu1 = sorgu1 + "GROUP BY [Resource Id], [Order No], [Duru Kodu]"

    Set rs = con.Execute(sorgu1)
    Sheets("Dashboard").Range("B65536").End(3).Offset(1, 0).CopyFromRecordset rs
    Set rs = Nothing

1 个答案:

答案 0 :(得分:4)

您的代码使用后期绑定,只要该库在计算机上可用,就不需要“参考”。在Mac OS的情况下,该库不存在,据我所知,显然是不允许的。

From Microsoft(强调补充):

  

要从数据库(例如Microsoft SQL Server)导入数据,您必须具有与计算机上安装的Microsoft Query兼容的ODBC驱动程序。第三方供应商提供兼容的ODBC驱动程序。有关更多信息,请参阅ODBC drivers that are compatible with Excel for Mac。有关安装ODBC驱动程序的详细信息,请参阅Microsoft Query帮助。

重要的是,对于您的问题,如果使用Excel 2011 for Mac,则在Mac OS上明确不支持OLE DB。

  

Excel 2011 for Mac无法从OLE DB或OLAP数据源导入数据。

因此,要回答您的问题,无法让您的 SQL查询在Mac上运行,您需要完全使用其他内容。

但是,如上所述,如果您使用的是Excel 2016 for Mac,则可以执行此操作:

  

此版本的Excel确实提供了用于连接SQL Server数据库的ODBC驱动程序。在“数据”选项卡上,单击“新建数据库查询”> SQL Server ODBC。然后使用对话框导入数据。

     

如果要连接到其他ODBC数据源(例如,FileMaker Pro),则需要在Mac上为数据源安装ODBC驱动程序。可以从这些公司获得与Excel for Mac兼容的驱动程序:

或者,对类似问题的回答看起来很有希望:

https://stackoverflow.com/a/25126885/1467082