AD認証を使用して、このアプローチを採用しました。インスピレーションを得るために、次の投稿の例を使用しました。 data-on-ms-sql-tables.aspx">http://www.eggheadcafe.com/community/sql-server/13/10141669/using-excel-to-update-data-on-ms-sql-tables .aspx
これらの関数は、Excel ワークブックのさまざまな領域 (オブジェクト、モジュール、このワークブック) にあることに注意してください。ただし、クイック リファレンスは次のとおりです。
また、参照するテーブルに対して FK 検証を行っている各列もあります。
以下にいくつかのコード サンプルを示します:
Public aCon As New ADODB.Connection Public aCmd As New ADODB.Command Private Sub Workbook_Open() Application.EnableEvents = False PopulateSheet Application.EnableEvents = True End Sub Sub Connect() Dim sConn As String sConn = "Provider=SQLOLEDB;Trusted_Connection=Yes;Server=[SVR];Database=[DB]" With aCon .ConnectionString = sConn .CursorLocation = adUseClient .Open End With BuildProcs End Sub Sub BuildProcs() With aCmd .ActiveConnection = aCon .CommandType = adCmdStoredProc .CommandText = "[SPROC]" .Parameters.Append .CreateParameter("@in_EmployeeID", adInteger, adParamInput) End With End Sub Sub PopulateSheet() Dim n As Integer, r As Long Dim aCmdFetchEmployees As New ADODB.Command Dim aRstEmployees As New ADODB.Recordset If aCon.State = adStateClosed Then Connect With aCmdFetchEmployees .ActiveConnection = aCon .CommandType = adCmdStoredProc .CommandText = "[SPROC]" Set aRstEmployees = .Execute End With r = aRstEmployees.RecordCount Worksheets(1).Activate Application.ScreenUpdating = False Cells(2, 1).CopyFromRecordset aRstEmployees For n = 1 To aRstEmployees.Fields.Count Cells(1, n) = aRstEmployees(n - 1).Name Cells(1, n).EntireColumn.AutoFit Next Cells(1).EntireColumn.Hidden = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range If aCon.State = adStateClosed Then Connect With aCmd .Parameters(0) = Cells(Target.Row, 1) .Parameters(1) = Cells(Target.Row, 4) .Parameters(2) = Cells(Target.Row, 5) .Parameters(3) = Cells(Target.Row, 6) .Parameters(4) = Cells(Target.Row, 7) .Parameters(5) = Cells(Target.Row, 8) .Parameters(6) = Cells(Target.Row, 10) .Parameters(7) = Cells(Target.Row, 11) .Parameters(8) = Cells(Target.Row, 12) .Parameters(9) = Cells(Target.Row, 13) .Parameters(10) = Cells(Target.Row, 14) .Parameters(11) = Cells(Target.Row, 15) .Parameters(12) = Cells(Target.Row, 16) .Execute , , adExecuteNoRecords End With End Sub
プレ>