如何从Excel(非链接表)更新访问表上的新行,保留旧数据

时间:2015-12-03 15:32:01

标签: excel excel-vba vba

需要Excel中的表格帮助,这就是问题所在:

我在Excel中有一个表(有26000行),这个表包含几个可以重复的参数,如公司,城市或产品,但总是有不同的参考编号。

另一个部门的人员在访问时添加了一个额外的列(附加费),为每一行写入附加值(是的,26000行)。这是MS Access中这个表的样子:

original excel and original access

以下是修改:每周都会生成一个新报告,创建一个新的Excel表,其中一些价格会更改,并且会从原始Excel表中添加新行。

正如您在图片上看到的那样,有新价格和新行(橙色)。 我需要的是在访问表中更新此更改(价格和新行),以便每周填写额外列的空白并更新它。

访问权限看起来像这样:

modification in excel and how it should be modified in access

这一切,有26000行..

1 个答案:

答案 0 :(得分:0)

请试试这个。 。 。

Sub UpdateAccessFromExcel()
    Dim rng As Range
    Dim r As Long
    Dim conn As ADODB.Connection
    Dim strConn As String
    Dim strSQL As String

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        "C:\Users\Northwind.mdb"
    Set conn = New ADODB.Connection
    conn.Open strConn

    With Worksheets("Sheet1")
        lastrow = .Range("A2").End(xlDown).Row
        lastcolumn = .Range("A2").End(xlToRight).Column
        Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
    End With

        'therow = 1

        For i = 2 To lastrow
            'r = rng.Row
            'If r > 1 Then
                strSQL = "UPDATE PersonInformation SET " & _
                    "FName='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
                    "LName='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
                    "Address='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
                    "Age=" & Worksheets("Sheet1").Range("E" & i).Value & " WHERE " & _
                    "ID=" & Worksheets("Sheet1").Range("A" & i).Value
                conn.Execute strSQL
            'End If
            'r = r + 1
        Next i

    conn.Close
    Set conn = Nothing
End Sub