【问题标题】:Copy all the sheet from closed workbook except hidden sheets从已关闭的工作簿中复制所有工作表,隐藏工作表除外
【发布时间】:2019-11-30 04:51:35
【问题描述】:

我想在 Sheet1 之后将所有工作表从特定工作簿复制到当前工作簿

Sub CopyAllSheets()
Dim MastWB  As Workbook
Dim SalesWB As Workbook


    Set MastWB = ThisWorkbook 'change to suit
    Set SalesWB = Workbooks.Open("F:\WIN7PROFILE\Desktop\Rporting\Test.xls")

    SalesWB.Sheets.Copy after:=MastWB.Sheets("Sheet1")
    Workbook.SalesWB.Close

End Sub

此代码正在复制所有工作表,包括隐藏的工作表。如何只复制可见的工作表?

【问题讨论】:

  • 错误是什么messge,是哪一行触发的?
  • SalesWB.Sheets.Copy after:=MastWB.Sheets("Sheet1") 运行时错误 '1004' 无法将工作表重命名为与另一个工作表、引用的对象库或工作簿引用相同的名称通过视觉基础
  • 我也尝试了不同的代码,但得到相同的错误Sub CopyAllSheets2() Dim b1 As Workbook, b2 As Workbook Dim sh As Worksheet Set b1 = ThisWorkbook Workbooks.Open Filename:=("F:\WIN7PROFILE\ Desktop\Rporting\test.xls") Set b2 = ActiveWorkbook For Each sh In b2.Sheets sh.Copy after:=b1.Sheets(b1.Sheets.Count) Next sh End Sub
  • 抱歉,在运行代码时,excel 也在处理隐藏的工作表,这也是导致问题的原因。你知道帮助我不复制隐藏工作表的代码吗?

标签: excel vba


【解决方案1】:

代码需要循环源工作簿中的工作表并检查Visible 属性。这可以是XlSheetVisibility 枚举的任何成员:xlSheetHiddenxlSheetVeryHiddenxlSheetVisible。如果您只想要可见的工作表,那么就像下面的代码一样(基于问题中的代码)。

请注意,您可能需要将ThisWorkbook 更改为ActiveWorkbook,因为ThisWorkbook 表示包含代码的工作簿...

Sub CopyAllSheets()
Dim MastWB  As Workbook
Dim SalesWB As Workbook
Dim ws as Worksheet

    Set MastWB = ThisWorkbook 'change to suit
    Set SalesWB = Workbooks.Open("F:\WIN7PROFILE\Desktop\Rporting\Test.xls")

    For Each ws In MastWB.Worksheets
        If ws.Visible = xlSheetVisible Then
          SalesWB.Sheets.Copy after:=MastWB.Sheets(ws)
          Workbook.SalesWB.Close
        End If
    Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-12
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多