现在我有一个员工用于数据输入的主Excel工作簿。他们每个人都将一份副本下载到他们的桌面上,然后通过在他们完成的数据旁边的comlun中输入“x”来标记他们在各种条目上的进度。每个产品都有自己的行,并在该行中列出各自的数据。在本季度,主工作簿会在产品可用时添加新数据,该数据目前已通过使用仅复制数据范围(请参阅下面的代码)的宏在每个个人工作簿中更新。插入行VBA
Sub GetDataFromClosedWorkbook()
'Created by XXXX 5/2/2014
Application.ScreenUpdating = False ' turn off the screen updating
Dim wb As Workbook
Set wb = Workbooks.Open("LOCATION OF FILE", True, True)
' open the source workbook, read only
With ThisWorkbook.Worksheets("1")
' read data from the source workbook: (Left of (=) is paste @ destination, right of it is copy)
.Range("F8:K25").Value = wb.Worksheets("1").Range("F8:K25").Value
End With
With ThisWorkbook.Worksheets("2")
' read data from the source workbook: (Left of (=) is paste @ destination, right of it is copy)
.Range("V5:Z359").Value = wb.Worksheets("2").Range("V5:Z359").Value
End With
wb.Close False ' close the source workbook without saving any changes
Set wb = Nothing ' free memory
Application.ScreenUpdating = True ' turn on the screen updating
End Sub
我遇到的问题是这样的:每过一段时间,我需要添加一个新的产品,它增加了主服务器上的行(这是反对添加数据,这仅仅是横跨行添加)。有时候,这一行最后,有时是在中间。正如你从下面的代码可以看到的,我的VBA目前无法处理这一行更改,因为它只是从预定义的范围复制/粘贴。每个用户的工作簿都不会在行#中发生此更改,因此列中的数据与错误的行关联。通常情况下,您可以复制整张表格并解决问题。我遇到的问题是,每个用户都需要能够在自己的工作簿中记录他们自己的进程旁边的数据。有没有一种方法可以对此进行编码,以便将主表中的新行计入并添加到所有其他行中,而不会擦除/移动每个用户所做的标记?我一直在试图找到一种方法来让它“插入”行,如果它们在主服务器中是新的,那么这将保留数据,但无法弄清楚。另外,由于服务器在工作时的安全性 - 链接工作簿等不是一种选择。有没有人有这个想法?
每个产品都有唯一的名称或其他唯一标识符吗? –
是的,他们这样做。前7列左右的产品都是唯一的,可以分别作为自己的标识符。 – Brumder
当您更新主工作簿时,您是仅添加新产品,还是更新现有的行? –