Windows と Mac の両方に対応する必要がある Excel ベースのツールを作成しています。このツールは、SQL Server からデータをプルしたり、SQL Server にデータをプッシュしたりする必要があります。ここで説明されているように、Windowsで機能し、Macでも機能するはずの方法を作成してテストしました(ただし、そのリンクはExcel 2011に関連しています)。
On Error GoTo err1
Dim connstring As String
Dim sqlstring As String
Dim dArr As Variant
Dim qt As QueryTable
Dim sht As Worksheet
Set sht = ThisWorkbook.Sheets(1)
connstring = "ODBC;DRIVER={SQL Server};SERVER=SERVERNAME;DATABASE=master;Trusted_Connection=yes"
sqlstring = "SELECT 1"
Set qt = sht.QueryTables.Add(Connection:=connstring, Destination:=sht.Range("A1"), Sql:=sqlstring)
With qt
.BackgroundQuery = False
.RowNumbers = False
.Refresh
End With
このアプローチは、Excel 2016 for Mac では機能しません。実際、Mac で接続を追加するプロセスを記録すると、QueryTables.Add メソッドは接続または SQL 引数さえ表示しません...
プログラムでテーブルを作成する代わりに、テーブルを手動で作成し、必要に応じてプログラムでテーブルの CommandText を変更することが回避策になると考えました (さまざまなパラメーターなど)。しかし、QueryTable オブジェクトの CommandText プロパティにアクセスしようとすると、Mac VBEditor からメンバーが見つからないというメッセージが表示されます。
Excel 2016 for Mac でプログラムによって ODBC QueryTables を正常に作成した人はいますか、それとも Excel 2016 のもう 1 つの欠点ですか?