我有一本三页的工作簿。 RC,RI,RCB。我需要编写VBA代码,它将复制该工作簿中的范围并将其粘贴到新创建的工作簿中。
在此代码中,除工作表RCB之外,所有内容均正常运行。调试在第12行打开
Sub Budget()
With Workbooks.Add
ActiveSheet.Name = "RC"
ThisWorkbook.Worksheets("RC").Range("A:D").Copy .Worksheets("RC").Range("A1")
ThisWorkbook.Worksheets("RC").Range("E:G").Copy .Worksheets("RC").Range("E1")
Sheets.Add
ActiveSheet.Name = "RI"
ThisWorkbook.Worksheets("RI").Range("A:E").Copy .Worksheets("RI").Range("A1")
ThisWorkbook.Worksheets("RI").Range("G:G").Copy .Worksheets("RI").Range("G1")
Sheets.Add
ActiveSheet.Name = "RCB"
ThisWorkbook.Worksheets("RCB").Range("A:C").Copy .Worksheets("RCB").Range("A1")
ThisWorkbook.Worksheets("RCB").Range("E:E").Copy .Worksheets("RCB").Range("G1")
.SaveAs "C:\Users\lomid\Desktop\4finansi3"
.Close
End With
End Sub
我认为它必须与活动表和工作簿有关。 这是一个错误,提示我:“运行时错误9:下标超出范围”
答案 0 :(得分:0)
您可以取消所有复制/粘贴。当您使用SaveAs
保存当前工作簿时,原始工作簿将关闭而不保存,而新工作簿将打开。从我可以从您的问题中看出来,您只想保留某些列。我想删除不需要的列,并对新的工作簿名称执行SaveAs
。下面的代码更加简洁。使用Application.DisplayAlerts = False
,以免收到The following features cannot be saved in macro-free workbooks:
提示。
Application.DisplayAlerts = False
With ThisWorkbook
.Sheets("RC").Range("H:Z").EntireColumn.Delete
.Sheets("RI").Range("H:Z, F:F").EntireColumn.Delete
.Sheets("RCB").Range("F:Z, D:D").EntireColumn.Delete
.SaveAs "C:\Users\lomid\Desktop\4finansi3.xlsx"
End With
Application.DisplayAlerts = True