Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Excel(非链接表)更新access表上的新行保留旧数据_Excel_Vba - Fatal编程技术网

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

如何从Excel(非链接表)更新access表上的新行保留旧数据,excel,vba,Excel,Vba,需要有关Excel表格的帮助,问题在于: 我在Excel中有一个表格(有26000行),这个表格包含几个可以重复的参数,如公司、城市或产品,但总是有不同的参考号 另一个部门的人员在access中包括此表,并添加了一个额外的列(附加费),以写入每行(是的,26000行)的附加费值。这是此表在MS Access中的外观: 修改如下:每周生成一份新报告,创建一个新的excel表,其中一些价格发生变化,并从原始excel表中添加新行 如图所示,有新的价格和新行(橙色)。 我需要的是更新access表中

需要有关Excel表格的帮助,问题在于:

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

另一个部门的人员在access中包括此表,并添加了一个额外的列(附加费),以写入每行(是的,26000行)的附加费值。这是此表在MS Access中的外观:

修改如下:每周生成一份新报告,创建一个新的excel表,其中一些价格发生变化,并从原始excel表中添加新行

如图所示,有新的价格和新行(橙色)。 我需要的是更新access表中的这些更改(价格和新行),这样就可以每周填补额外列上的空白并进行更新

访问权限如下所示:


所有这些,有26000行..

请试试这个

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

非常感谢Andre,我现在就要试试你的代码,我会回复的。再次感谢!!!!!!