我想使这一过程自动化,以减少出错的风险。
这是我使用VBA的第一天,因此我的技能有些缺乏。我试图使工作中的某些步骤自动化,因此我需要从Access复制1列并将其粘贴到Excel工作表中。突变后,我必须将结果复制/粘贴回Access(同一表的另一列)。我一直在寻找有效的VBA代码并对其进行测试,但是直到现在我还没有找到任何代码。
enter code here
const TARGET_DB =“ test.accdb”
Sub Test()
Dim cnn As ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Sheets("Informatie").Select
Rw = Range("A2", Range("A2").End(xlDown)).Select
Set cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MyConn
End With
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="Table1", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Options:=adCmdTable
'Load all records from Excel to Access.
For i = 2 To Rw
rst.AddNew
For j = 1 To 7
rst(Cells(1, j).Value) = Cells(i, j).Value
Next j
rst.Update
Next i
'Close the connection
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
MsgBox "Alan's work is finished for today"
我希望在Access文件中看到一些变化。任何突变都会 开始。但是,除了我在Excel工作表中选择了正确的范围之外,什么都没有发生。
答案 0 :(得分:0)
Rw = Range("A2", Range("A2").End(xlDown)).Select
应该是
Rw = Range("A2").End(xlDown).Row
您的原始行将使Rw返回-1,因此不会添加任何数据。
如果添加的数据需要与原始数据对齐,则此方法可能不理想-无法保证会发生这种情况。