MS SQL Server 2008 データベースで SQL クエリを実行し、結果をスプレッドシートに出力する VBA マクロを作成するにはどうすればよいですか?
質問する
2100 次
1 に答える
1
- Excel を開き、マクロ エディター (Alt + F11) を開きます。
- Tools> References に移動し、インストールされている最新バージョンの Microsoft ActiveX Data Objects XX Library (私の場合は 6.1) を追加します。
- 次のように新しいサブを追加します
Sub RunSQL(sConnectionString, sSqlQuery, sWorkSheet, nStartColumn, nStartRow)
Dim oConnection As New ADODB.Connection
Dim oRecordSet As New ADODB.Recordset
Dim sQuery As String
Dim intMaxCol As Integer
Dim intMaxRow As Integer
'Connection to SQL Server
Call oConnection.Open(sConnectionString)
' Get Recordset
Call oRecordSet.Open(sSqlQuery, oConnection, adOpenStatic, adLockReadOnly)
' Get SQL Query Column Count
intMaxCol = oRecordSet.Fields.Count
If oRecordSet.RecordCount > 0 Then
' Get SQL Query Row Count
intMaxRow = oRecordSet.RecordCount
' Paste data into sheet
Call Worksheets(sWorkSheet).Range(Worksheets(sWorkSheet).Cells(nStartRow, nStartColumn), Worksheets(sWorkSheet).Cells(intMaxRow + nStartRow, intMaxCol + nStartColumn)).CopyFromRecordset (oRecordSet)
End If
' Close objects
oRecordSet.Close
oConnection.Close
End Sub
- これをコードから呼び出し、パラメーターを次のように更新します。
Call RunSQL("Provider=SQLNCLI10;Server=[[SERVER]]\[[INSTANCE]];Database=[[DATABASE]];Trusted_Connection=Yes;", _
"SELECT TOP 1 CAST(UniqueId AS VARCHAR(40)), Name FROM Employee WITH (NOLOCK)", _
"Sheet1", _
2, _
3)
それが役立つ場合に備えて、次の投稿を含む曲がりくねったルートからこれを入手しました。
于 2013-10-28T16:20:16.420 に答える