I 스프레드 시트에서 데이터를 가져 오는 다음 코드는 엑셀 VBA에서 직접 SQL해야 :엑셀 VBA SQL 가져 오기
Sub SQLIM()
' Send data to SQL Server
' This code loads data from an Excel Worksheet to an SQL Server Table
' Data should start in column A and should be in the same order as the server table
' Autonumber fields should NOT be included'
' FOR THIS CODE TO WORK
' In VBE you need to go Tools References and check Microsoft Active X Data Objects 2.x library
Dim Cn As ADODB.Connection
Dim ServerName As String
Dim DatabaseName As String
Dim TableName As String
Dim UserID As String
Dim Password As String
Dim rs As ADODB.Recordset
Dim RowCounter As Long
Dim ColCounter As Integer
Dim NoOfFields As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim shtSheetToWork As Worksheet
Set shtSheetToWork = ActiveWorkbook.Worksheets("Sheet1")
Set rs = New ADODB.Recordset
ServerName = "WIN764X\sqlexpress" ' Enter your server name here
DatabaseName = "two28it" ' Enter your database name here
TableName = "COS" ' Enter your Table name here
UserID = "" ' Enter your user ID here
' (Leave ID and Password blank if using windows Authentification")
Password = "" ' Enter your password here
NoOfFields = 7 ' Enter number of fields to update (eg. columns in your worksheet)
StartRow = 2 ' Enter row in sheet to start reading records
EndRow = shtSheetToWork.Cells(Rows.Count, 1).End(xlUp).Row ' Enter row of last record in sheet
' CHANGES
' Dim shtSheetToWork As Worksheet
' Set shtSheetToWork = ActiveWorkbook.Worksheets("Sheet1")
'********
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & _
";Uid=" & UserID & ";Pwd=" & Password & ";"
rs.Open TableName, Cn, adOpenKeyset, adLockOptimistic
For RowCounter = StartRow To EndRow
rs.AddNew
For ColCounter = 1 To NoOfFields
rs(ColCounter - 1) = shtSheetToWork.Cells(RowCounter, ColCounter)
Next ColCounter
Next RowCounter
rs.UpdateBatch
' Tidy up
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub
코드는 잘 작동합니다. 그러나 누군가가 코드를 수정하도록 도울 수 있는지 궁금합니다.
- SQL 테이블에 A 열의 데이터가 이미 있는지 확인하십시오.
- 데이터가있는 경우 새 역할로 가져 오기보다는 업데이트 만 수행하십시오.
- 데이터가 없으면 새 역할로 가져옵니다.
게시물을 편집하여 코드를 모두 1 블록으로받을 수 있습니까? 필요는 없지만 읽기 쉽습니다. – PowerUser