我有许多Excel工作簿,其中包含25个以上工作表,每个工作表包含范围为1:500的20列数据(或部分为1:1000例)。我经常负责更新输入新数据以进行新计算的“模板”。我希望能够将旧工作表中的现有数据轻松地粘贴到具有新格式的工作表中,同时保留新模板中的任何新格式/公式。VBA:如何将两个工作簿之间的副本/粘贴扩展到两个工作簿中的所有工作簿
我使用VBA打开我想复制并粘贴到新模板工作表的工作表。到目前为止,我的代码将复制要复制的工作簿的第一个工作表(S1)中的所有内容,并将其粘贴到目标工作簿的第一个工作表(S1)上。
我想扩展此过程以遍历所有活动工作表(现在对工作簿中的每个工作表执行任何操作)。我以前能够用不同的代码做到这一点,但它删除了行503和行506中我需要粘贴的公式。我可以做一个pastespecial并跳过空单元格吗?我是新来的。
这里是我当前的代码:
Sub CopyWS1()
Dim x As Workbook
Dim y As Workbook
Set x = Workbooks("Ch00 Avoid.xlsx")
Set y = Workbooks("Ch00 Avoid1.xlsx")
Dim LastRow As Long
Dim NextRow As Long
x.Worksheets("S1").Activate
Range("A65536").Select
ActiveCell.End(xlUp).Select
LastRow = ActiveCell.Row
Range("A2:T" & LastRow).Copy y.Worksheets("s1").Range("A1:A500")
Application.CutCopyMode = False
Range("A1").Select
End Sub
我相信,我需要为整个工作表扩展,以使用类似下面的代码,但我不知道如何通过迭代张因为我在上面的代码中特别引用了两张纸。
Sub WorksheetLoop2()
' Declare Current as a worksheet object variable.
Dim Current As Worksheet
' Loop through all of the worksheets in the active workbook.
For Each Current In Worksheets
' Insert your code here.
' This line displays the worksheet name in a message box.
MsgBox Current.Name
Next
End Sub
我想,(直到我的指数为25或某事做出一个新的变量和运行一个for循环)作为替代,但同样我也许能解决这个问题作为一个for循环跨工作表的索引,我不知道如何将我的复制/粘贴从特定的表单指向另一个表单。我对这一点很陌生,只有Python/Java的半限制经验。这些VBA技能会在日常工作中大大受益。
两个文件中的问题: Ch00 Avoid
“我不知道如何从一个特定的表到另一个工作表指向我的复制/粘贴” ---你为什么不试着去'表(I).Range( “A2:T”&LastRow).Copy Sheets(j).Range(“A1”)'其中i和j是您希望使用的工作表的索引。 –
此外,它可能有助于避免使用['.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros),在非常至少它会帮助你更好地理解如何处理数据。你也可以看起来像“VBA循环通过工作表” – BruceWayne
我完全失去了。每次我修改我的代码时,我都失去了我所拥有的功能。我应该详细说明,迄今为止我所获得的任何功能都是由于运气不佳和杂乱无章地将别人的代码拼凑在一起。 如果我添加 表(i).Range(“A2:T”&LastRow).Copy表(j).Range(“A1”) 并指定我想要的范围(索引1到索引25)发生。我想连续激活我的第一个工作簿中的每个工作表,从1-500行和A-T列复制数据,并将这些数据复制到新工作簿中的相应工作表中。 – RigStackhorse