... или вытащить записи из QueryTables.
Теоретически вы можете написать библиотеку .NET Core, обертывающую ADO.NET, а затем сделать так, чтобы эта библиотека открывала API COM-видимый, а затем, вероятно, могла ссылаться на него из VBA, предполагая, что Mac-VBA позволяет ссылаться на такие библиотеки типов, и предполагая, что все выше работает .. ... но это в основном неизведанная территория. Тем не менее, стоит попробовать. Отказ от ответственности: у меня нет Mac, и я собираю .NET на Windows ... но .NET Core работает на Mac, так что ..
попробуйте этот srting:
sconnect = "Provider=MSDASQL.1;DSN=your ODBC connection name; " & _ "UID=your user;PWD=your password;DBQ=your database" & DBPath & ";HDR=Yes';"
Строка подключения для IBM / AS400: (без ADODB, возможно, работает на Mac, но только с сервером IBM)
sconnect = "PROVIDER=IBMDA400;Data Source=servername; " & _ "DEFAULT COLLECTION=optional;USER ID=Username ;PASSWORD=KENNWORT"
SQLDatabase_VBA.bas:
Sub SQLDatabase_VBA()
On Error Resume Next
'Step 1: Create the Connection String with Provider and Data Source options
Public sSQLQry As String
Public ReturnArray
Public Conn As New ADODB.Connection
Public mrs As New ADODB.Recordset
Public DBPath As String, sconnect As String
'Step 2: Create the Connection String with Provider and Data Source options
ActiveSheet.Activate
DBPath = ThisWorkbook.FullName 'Refering the sameworkbook as Data Source
'You can provide the full path of your external file as shown below
'DBPath = "C:\InputData.xlsx"
sconnect = "Provider=MSDASQL.1;DSN=Connect_fromODBC;UID=your user name;PWD=your password;DBQ=database name" & DBPath & ";HDR=Yes';"
'If any issue with MSDASQL Provider, Try the Microsoft.Jet.OLEDB:
'sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & DBPath _
& ";Extended Properties = ""Excel 8.0;HDR=Yes;IMEX=1"";"
'Step 3: set connection timeout Open the Connection to data source
Conn.ConnectionTimeout = 30
Conn.Open sconnect
'Step 4: Create SQL Command String MRFIRM, MRIDEN, MRSART,MRSRN,MRSRRF,MRDTB,MRUSER, MRSRNA as Serien_NR_Zugriff
sSQLSting = "SELECT * From your database " & _
" WHERE ------ " & _
" Group by ----- "
'Step 5: Get the records by Opening this Query with in the Connected data source
mrs.Open sSQLSting, Conn
'Step 6: Copy the reords into our worksheet
'Import Headers
For i = 0 To mrs.Fields.Count - 1
ActiveSheet.Range("B15").Offset(0, i) = mrs.Fields(i).Name
Next i
'Import data to destination cell
ActiveSheet.Range("B15").Offset(1, 0).CopyFromRecordset mrs
'Step 7: Close the Record Set and Connection
'Close Recordset
mrs.Close
'Close Connection
Conn.Close
Set mrs = Nothing
Set Conn = Nothing
End Sub
ADODB недоступен для Mac. Большинство людей используют QueryTables, которые не так хороши, но, похоже, они справляются со своей задачей.