Excel VBA从Excel导出到SQL Server

Excel VBA从Excel导出到SQL Server,vba,excel,Vba,Excel,我正在运行下面的代码,在将数据从Excel导出到SQL Server时,它会跳过其他字段。这很奇怪。也许递增器出了问题,但我不知道是什么。有人能解释一下吗?谢谢 Sub testexportsql() Dim Cn As ADODB.Connection Dim ServerName As String Dim DatabaseName As String Dim TableName As String Dim UserID As String D

我正在运行下面的代码,在将数据从Excel导出到SQL Server时,它会跳过其他字段。这很奇怪。也许递增器出了问题,但我不知道是什么。有人能解释一下吗?谢谢

Sub testexportsql()
    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 NoOfFields As Integer
    Dim StartRow As Long
    Dim EndRow As Long
    Dim ColCounter As Integer

    Set rs = New ADODB.Recordset

    ServerName = "server_name" ' Enter your server name here
    DatabaseName = "db_name" ' Enter your  database name here
    TableName = "customer_master" ' 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 = 331 ' Enter number of fields to update (eg. columns in your worksheet)
    StartRow = 2 ' Enter row in sheet to start reading  records
    EndRow = 106695 ' Enter row of last record in sheet

     '  CHANGES
    Dim shtSheetToWork As Worksheet
    Set shtSheetToWork = ActiveWorkbook.Worksheets("customer_master")
     '********

    Set Cn = New ADODB.Connection
    Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & _
    ";Uid=" & UserID & ";Pwd=" & Password & ";"

    rs.Open TableName, Cn, adOpenKeyset, adLockOptimistic

     'EndRow = shtSheetToWork.Cells(Rows.Count, 1).End(xlUp).Row
    For RowCounter = StartRow To EndRow
        rs.AddNew
        For ColCounter = 1 To NoOfFields
        'On Error Resume Next
            rs(ColCounter - 1) = shtSheetToWork.Cells(RowCounter, ColCounter)
            ColCounter = ColCounter + 1
        Next ColCounter
        Debug.Print RowCounter
    Next RowCounter
    rs.UpdateBatch

     ' Tidy up
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing

End Sub

是的,你是正确的,它在你的代码中。For…Next循环本身执行递增操作,您通过额外递增循环变量来“配音”它。只需删除该行

 ColCounter = ColCounter + 1

是的,你是正确的,它在你的代码中。For…Next循环本身执行递增操作,您通过额外递增循环变量来“配音”它。只需删除该行

 ColCounter = ColCounter + 1