【发布时间】:2018-06-05 23:10:49
【问题描述】:
我正在尝试将 Excel 工作簿中的特定集合表复制到单独的工作簿中。我不是 vba 编码器,我使用并改编了此处和其他资源站点中的代码。我相信我现在已经非常接近掌握了基本概念,但无法弄清楚我做错了什么,触发下面的代码会导致创建第一个新工作簿并插入第一张工作表,但此时会中断。
我的代码如下,附加相关信息 - 有一张名为“列表”的表格,其中有一列名称。列表中的每个名称都有 2 张纸,我试图将它们 2×2 复制到同名的新纸中。工作表被标记为名称和名称 + H(例如 Bobdata 和 BobdataH)
Sub SheetCreate()
'
'Creates an individual workbook for each worksname in the list of names.
'
Dim wbDest As Workbook
Dim wbSource As Workbook
Dim sht As Object
Dim strSavePath As String
Dim sname As String
Dim relativePath As String
Dim ListOfNames As Range, LRow As Long, Cell As Range
With ThisWorkbook
Set ListSh = .Sheets("List")
End With
LRow = ListSh.Cells(Rows.Count, "A").End(xlUp).Row '--Get last row of list.
Set ListOfNames = ListSh.Range("A1:A" & LRow) '--Qualify list.
With Application
.ScreenUpdating = False '--Turn off flicker.
.Calculation = xlCalculationManual '--Turn off calculations.
End With
Set wbSource = ActiveWorkbook
For Each Cell In ListOfNames
sname = Cell.Value & ".xls"
relativePath = wbSource.Path & "\" & sname
Sheets(Cell.Value).Copy
Set wbDest = ActiveWorkbook
Application.DisplayAlerts = False
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.SaveAs Filename:=relativePath, FileFormat:=xlExcel8
Application.DisplayAlerts = True
wbSource.Activate
Sheets(Cell.Value & "H").Copy after:=Workbooks(relativePath).Sheets(Cell.Value)
wbDest.Save
wbDest.Close False
Next Cell
MsgBox "Done!"
End Sub
【问题讨论】:
-
您在哪一行遇到的具体错误是什么?
-
您好,在创建第一个新工作簿后出现“下标超出范围”
-
阅读minimal reproducible example 可能有助于改进您的帖子 - 请edit 您的问题提供所有相关信息,不要在 cmets 部分留下重要信息 ;-)