每年我都会有一个新的年度 Excel 文件,其结构与上一年相同。在上一年中,我定义了必须从该 Excel 文件的所有工作表中读取的行和列,并将计算结果返回到同一个文件。
在新的一年里,我需要重复整个过程。有没有办法将链接和公式从上一年移动到下一年,而无需手动重新绑定数据?
这是录制的宏:
Sub NewYearData()
' NewYearData Makronaredba
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Liquid Fuels").Select
Range("C16:AH18").Select
Selection.Copy
Application.WindowState = xlNormal
Windows("CurrentYear2.xlsx").Activate
Range("C16").Select
ActiveSheet.Paste Link:=True
ActiveSheet.Paste
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
Application.CutCopyMode = False
Selection.Copy
Windows("CurrentYear2.xlsx").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
ActiveSheet.Paste
End Sub
如何使它适用于所有工作表?
- 对于两个文件中具有相同名称的所有工作表
- 查找引用所在的单元格
- 将引用从源文件复制到目标文件的同一位置
答案1
假设我们有相同的床单(同名) 在两个都工作簿。我们定义一些对象并使用循环:
Sub NewYearData()
Dim wb1 As Workbook, wb2 As Workbook
Dim r1 As Range, r2 As Range
Dim addy As String, sh As Worksheet
Dim shName As String
Set wb1 = Workbooks("PreviousYear.xlsm")
Set wb2 = Workbooks("CurrentYear2.xlsx")
addy = "C16:AH18"
For Each sh In wb1.Sheets
shName = sh.Name
Set r1 = sh.Range(addy)
Set r2 = wb2.Sheets(shName).Range(addy)
r1.Copy r2
Next sh
End Sub