当前位置: 首页 > 知识库问答 >
问题:

从关闭工作簿复制除隐藏工作表外的所有工作表

方光华
2023-03-14

我想在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

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

共有1个答案

纪勇军
2023-03-14

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

请注意,您可能希望将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
 类似资料:
  • 我使用这段代码将工作簿中的每一张工作表复制到一个新的工作簿中,它工作得很好,但它颠倒了工作表的顺序,是否有任何办法阻止它这样做? 我正在复制所有的工作表,这样我就可以将它保存为不同的文件扩展名,这是我发现唯一有效的方法。

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我有一个Libreoffice Calc工作簿,有60多张纸,其中很多都有复制到它们的沉重图像。我想删除所有的图像与一个Calc基本宏。我尝试了以下操作,但失败了,出现一个基本的运行时错误,说明找不到 我需要一个代码,将工作像上面的一个,以删除所有的图像,从一个Calc工作簿的所有工作表。请帮帮我.

  • 所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。 基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。 在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。 我创建了一个在打开工作簿时加载的表单。我想要的是当我单击表单运行时,它将: > 将代码保存模板作为新工作簿运行 根据userform1的输入重命名工作

  • 这里是VBA新手。 谢谢你的教育!