创buildExcelmacros以将具有特定标题的工作表过滤到新的工作簿

我有一个Excel工作簿包含~50张不同的工作表。 这些表被组织成原始数据和组织的数据摘要。

数据摘要是我尝试上传到Access数据库的工作表,这些工作表都包含string“Summary”或“Sum”作为其名称的一部分。 我是VBA的新手,我想知道是否有办法设置一个脚本来过滤表单,这样我只剩下汇总表而不是原始数据表作为工作簿的一部分。

理想情况下,我会将摘要表复制到一个新的Excel工作簿,因为我不想丢失我的原始数据。 任何帮助? 或者这是不可能的?

使用InStr()函数对此非常有用! 这里的奖励是表单将被隐藏, 不会被删除。

由于“摘要”已经包含string“Sum”,所以我没有把逻辑放在那里。

用于隐藏包含“总和”的表格的macros

 Sub HideSheets() Dim sht As Worksheet For Each sht In Worksheets If (InStr(sht.Name, "Sum")) Then sht.Visible = xlSheetHidden End If Next End Sub 

macros显示所有表格

 Sub ShowSheets() Dim sht As Worksheet For Each sht In Worksheets sht.Visible = xlSheetVisible Next End Sub 
 Option explicit Sub CopySumSheetsOver() Const SUBSTRING as string = "Sum" 'Change this to whatever string you want to search for.' With thisworkbook Dim ws as Worksheet Dim SheetNames() as string Redim SheetNames(1 to .worksheets.count) Dim SheetIndex as long For each ws in .worksheets SheetIndex = SheetIndex + 1 SheetNames(SheetIndex) = ws.name Next ws Redim preserve sheetnames(1 to sheetindex) SheetNames = filter(sheetnames,SUBSTRING,True,vbTextCompare) 'vbBinaryCompare is faster, but case-sensitive, use whichever one you need.' Dim DestinationWorkbook as workbook Set DestinationWorkbook = application.workbooks.add .worksheets(SheetNames).copy destinationworkbook.worksheets(destinationworkbook.worksheets.count) End with End sub 

未经testing,写在手机上。 抱歉格式不正确。