VBA复制,过去,重命名,复制过去并贯穿每一列



我正在尝试构建一个 vba 代码。 有些位正在工作,有些不起作用。 工作: 它正在从"客户"工作簿中收集有价值的单元格,并将其粘贴到供应商工作簿中的新工作表中。新工作表在单元格名称上重命名。 不起作用:我还想复制供应商工作簿中名为模板的标题。 我希望VBA代码贯穿每一列的最后一位。

Sub Copy_Past_Repeat()
Dim rs As Worksheet
Dim rng As Range
Windows("Customer.xlsm").Activate
Set rng = Range("n1:n1000")   'column
rng.SpecialCells(xlCellTypeConstants).Select   'Selecting only hardcoded data
Selection.Copy
Windows("Supplier.xlsm").Activate
Sheets.Add after:=ActiveSheet
Range("C2").Select
ActiveSheet.Paste
ActiveSheet.Name = ActiveSheet.Range("C2")
'not working
ThisWorkbook.Sheets("Template").Range("A1:E1").Select
Selection.Copy
ActiveSheet.Paste 'should be pasted in just crated spreadsheet Name=(C2)
Application.CutCopyMode = False
End Sub `

强烈建议避免使用.Select.Activate或类似操作。
请参阅如何避免在 Excel VBA 中使用"选择">

还要始终指定区域所在的工作表或工作簿。否则Excel无法知道并猜测。

Option Explicit
Sub Copy_Past_Repeat()
Dim rng As Range
Set rng = Workbooks("Customer.xlsm").Range("N1:N1000")   'column
rng.SpecialCells(xlCellTypeConstants).Copy   'Copy only hardcoded data
Dim NewWs As Worksheet
With Workbooks("Supplier.xlsm")
Set NewWs = .Sheets.Add(After:=.ActiveSheet) 'remember the new added sheet in NewWs so we can access it later 
NewWs.Range("C2").Paste
NewWs.Name = NewWs.Range("C2")
ThisWorkbook.Worksheets("Template").Range("A1:E1").Copy
NewWs.Paste 'should be pasted in just crated spreadsheet Name=(C2)
'here you should specify where in the sheet to paste
'NewWs.Range("A1").Paste
End With
Application.CutCopyMode = False
End Sub

最新更新