VBA - 使用其他工作簿加载主工作簿

时间:2016-08-19 13:09:55

标签: vba

我有这两个表,1是数据表,第二个是指令表。

每天我都会更新指令表,然后运行宏,它将根据ID相应地更新数据表。

目前非常简单。如果数据表ID(Col A)与指令表ID(Col J)匹配,则相应的数据Col B-F将根据指令表进行更新。

数据表

Col A = ID

Col B-G =不同的名字

指令表是:

Col I是添加(更改为Y)或删除(更改为N)Col K i

Col J是ID

COl K表示要更新的名称(Col B-G的标题)。

Sub updatedatatable()

 On Error Resume Next

 Dim instructionlastrow, findtablecolumn, findtablerow As Long

 Dim findid As Integer

 instructionlastrow = Range("I" & Rows.Count).End(xlUp).Row

 For i = 2 To instructionlastrow

     findid = 0

     If Range("I" & i).Value = "Add" And Range("A:A").Find(Range("J" & i).Value).Row = 0 Then

         Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Value = Range("J" & i).Value

         findtablecolumn = Rows(1).Find(Range("K" & i)).Column

         findtablerow = Range("A:A").Find(Range("J" & i)).Row

         Cells(findtablerow, findtablecolumn).Value = "Y"

     ElseIf Range("I" & i).Value = "Add" And Range("A:A").Find(Range("J" & i).Value).Row <> 0 Then

         findtablerow = Range("A:A").Find(Range("J" & i)).Row

         findtablecolumn = Rows(1).Find(Range("K" & i)).Column

         Cells(findtablerow, findtablecolumn).Value = "Y"

     ElseIf Range("I" & i).Value = "Remove" And Range("A:A").Find(Range("J" & i).Value).Row <> 0 Then

         findtablerow = Range("A:A").Find(Range("J" & i)).Row

         findtablecolumn = Rows(1).Find(Range("K" & i)).Column

         Cells(findtablerow, findtablecolumn).Value = "N"

     End If

 Next i
End Sub

如果有人可以教我,我可以徘徊,以便可以从不同的工作簿加载指令表。

由于

1 个答案:

答案 0 :(得分:0)

根据你的描述,我不确定这两个表的关系应该是什么,但我理解为这个;您目前将它们放在同一工作簿中(在同一工作表中?)但希望将它们放在不同的工作簿中。

要从vba中的其他工作簿访问工作簿,您可以使用Workbooks.Open方法 https://msdn.microsoft.com/en-us/library/office/ff194819.aspx

我还可以推荐Ron de Bruin的一些代码示例 http://www.rondebruin.nl/win/section3.htm

由于您还没有尝试访问单独的工作簿,我不是100%想要做的事情,但请查看链接,尝试解决方案然后再回来如果你再次陷入困境。