我在尝试执行以下操作时遇到了问题:
我有2个名为Master的工作簿1,另一个名为Slave。 Master有一个名为Data的工作表,每隔一段时间就会自动输入数据。数据被输入到范围从A8到BL8的单元中。每次存储新数据时,它都会向下推送旧数据并将其再次保存到A8:BL8中。 Slave有一个名为DATA的工作表,格式完全相同。
我的目标如下:
我想编写一个VBA代码,每次输入新数据时(每24小时通常6-7个新数据包)主工作簿(工作表称为数据),我希望它将相同的信息更新到Slave工作簿(工作表称为DATA),无需打开或运行工作簿(数据可以在一天中随机输入,因此我并不总是跟踪并需要它自己传输数据)。
两个工作簿都保存在我的计算机上的不同位置。我的尝试工作,但我只能通过复制单元格范围A8:BL8中的当前值并将其移动到我想要的工作簿,通过按钮(插入)触发宏...(I希望我的问题很清楚)所以它只更新最新的数据,而不是所有的数据。
我的目标最终是能够在具有相同格式的许多工作簿之间执行此操作(进入相同的工作簿Slave(工作表数据))
我的代码从工作簿Slave(工作表DATA)通过分配给此宏的按钮运行。
Sub OpenCopyPaste()
Dim wb As Workbook
Dim Reportwb As Workbook
Set Reportwb = Workbooks("Slave.xlsm")
Set wb = Workbooks.Open(Filename:="C:\Users\yilmadu001 \Desktop\Master.xlsm")
wb.Sheets("Data").Range("A8:BL8").Copy
Reportwb.Sheets("DATA").Range("A8:BL8").Insert Shift:=xlDown
Reportwb.Save
wb.Close False
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
根据您的评论,要在保存之前运行代码,请将以下内容放入ThisWorkbook
对象。
Private Sub Workbook_BeforeSave(Cancel As Boolean)
Dim wb As Workbook
Dim Reportwb As Workbook
Set Reportwb = Workbooks("Slave.xlsm")
Set wb = Workbooks.Open(Filename:="C:\Users\yilmadu001 \Desktop\Master.xlsm")
wb.Sheets("Data").Range("A8:BL8").Copy
Reportwb.Sheets("DATA").Range("A8:BL8").Insert Shift:=xlDown
Reportwb.Save
wb.Close False
Application.ScreenUpdating = True
End Sub