【问题标题】:How to copy sheets with certain tab color from one workbook to another?如何将具有特定标签颜色的工作表从一个工作簿复制到另一个工作簿?
【发布时间】:2019-01-25 08:32:03
【问题描述】:

我有几个工作簿,其中有几个工作表的选项卡颜色带有 RGB 代码 (0,255,0),即完全绿色,因此我只需将这些工作表复制到 ActiveWorkbook,而无需打开包含这些绿色工作表的工作簿

Sub Copy_Green_Sheets()
Dim wb As Workbook
Dim ws As Worksheet

If ws.Tab.Color = RGB(0, 255, 0) Then
         Set wb = Workbooks("Target workbook")
         For Each ws In Workbooks("source workbook").Worksheets
         ws.Copy After:=wb.Sheets(wb.Sheets.Count)
         Next ws
End If
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    Option Explicit
    
    Sub DoItForAllWorkbooks()
        Dim myWorkbook As Workbook
        Dim myWbFullNames(100) As String
        Dim iCt As Integer
    
        ' You might to want to create such a list with Excel:
        '="'        myWbFullNames("&B3&") = ""C:\mySpecialFolder\myFile0"&B3&".xlsx"""
    
        myWbFullNames(1) = "C:\mySpecialFolder\myFile01.xls"
        myWbFullNames(2) = "C:\mySpecialFolder\myFile02.xls"
        myWbFullNames(3) = "C:\mySpecialFolder\myFile03.xls"
        myWbFullNames(4) = "C:\mySpecialFolder\TabColor4.xlsx"
        myWbFullNames(5) = "C:\mySpecialFolder\myFile05.xls"
    
        For iCt = 1 To 5
            Workbooks.Open myWbFullNames(iCt)
            Set myWorkbook = ActiveWorkbook
            Call Copy_Green_Sheets_NEW(ActiveWorkbook)
            myWorkbook.Close
        Next iCt
    End Sub
    
    Sub Copy_Green_Sheets_NEW(SourceWorkbook as workbook)
    Dim wb As Workbook
    Dim ws As Worksheet
        Set wb = Workbooks("Target workbook")
        'For Each ws In Workbooks("source workbook").Worksheets --- OLD
        For Each ws In SourceWorkbook.Worksheets
            If ws.Tab.Color = RGB(0, 255, 0) Then
                ws.Copy After:=wb.Sheets(wb.Sheets.Count)
            End If
        Next ws
    End Sub
    

    【讨论】:

    • “源工作簿”中需要包含哪些内容?有很多包含绿片的工作簿
    • 所有工作簿都打开了吗?还是它们在某个文件夹中?
    • 它们在某个文件夹中
    • 我已更新代码以包含来自不同工作簿的调用。
    • 谢谢!它似乎正在工作,但它永远不会停止并继续创建这些工作表的副本,如第二 (2)、第三 (3)、第四 (4).... 等等。也许它应该在完成时在某处停止循环?
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多