我已经通过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
答案 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兼容的驱动程序:
或者,对类似问题的回答看起来很有希望: