VBA将所有TAB合并为一个,并包含TAB名称

VBA将所有TAB合并为一个,并包含TAB名称

问题描述:

我正在处理VBA代码以将选项卡上的所有内容合并到一个选项卡中。所有的作品很好,除了我不能得到包含TAB文件名称。我有超过200多个选项卡,我需要从它们的所有内容放在一个选项卡上(数据结构相同),但也包括列名称(最好是A列)中的选项卡名称。这是我迄今为止:VBA将所有TAB合并为一个,并包含TAB名称

Sub FuLL_LIST_MERGE() 
' 
' FuLL_LIST_MERGE Macro 
' 

' 
Dim ws As Worksheet 
ActiveSheet.UsedRange.Offset(0).Clear 
For Each ws In ActiveWorkbook.Worksheets 
If ws.Name <> ActiveSheet.Name Then 
ws.UsedRange.Copy 
Range("A65536").End(xlUp).Offset(1, 0).Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
False, Transpose:=False 
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ 
False, Transpose:=False 
End If 
Next 
End Sub 

试试这个

Sub FuLL_LIST_MERGE() 
' 
' FuLL_LIST_MERGE Macro 

Dim ws As Worksheet, n As Long 

ActiveSheet.UsedRange.Offset(0).Clear 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Name <> ActiveSheet.Name Then 
     n = ws.Range("A" & Rows.Count).End(xlUp).Row 
     ws.Range("A1").Resize(n, ws.UsedRange.Columns.Count).Copy 
     Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues 
     Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlFormats 
     Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(n) = ws.Name 
    End If 
Next 

End Sub 

感谢@SJR!但是,在每个表单中,都有1到100行,但有200行格式化(有行边界等)。所以现在发生的事情是,这个脚本需要200行TAB名称(因为每行中格式化了200行),但它只需要1-100个文本。换句话说,我从所有工作表中粘贴了1753行,但A列中有40042行带有日期。

Sub FuLL_LIST_MERGE() 
' 
' FuLL_LIST_MERGE Macro 

Dim ws As Worksheet 

ActiveSheet.UsedRange.Offset(0).Clear 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Name <> ActiveSheet.Name Then 
     ws.UsedRange.Copy 
     Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues 

     Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(ws.UsedRange.Rows.Count) = ws.Name 
    End If 
Next 

End Sub 
+0

Couln't得到这个工作,所以用明文格式VBA和它的工作......但是它会是不错的解决方案如何得到它不清除格式的工作,如果任何人有一段时间了... '子clear_format() 昏暗WS作为工作表 ActiveSheet.UsedRange.Offset(0).Clear 对于每个WS在ActiveWorkbook.Worksheets 如果ws.Name ActiveSheet.Name然后 ws.Cells.ClearFormats End If Next End Sub' – Freedox

+0

OK,修改了上面的代码。如果数据列的数量是固定的,可以调整以纳入该数据,但修改应至少不复制已格式化的空行。 – SJR

+0

工程就像一个魅力! @SJT非常感谢你! – Freedox