VBA将所有TAB拉入一个并包含TAB名称

时间:2016-11-09 12:54:12

标签: excel vba excel-vba

我正在使用VBA代码将选项卡上的所有内容拉到一个标签中。一切都很好,除了我不能包括TAB文件名。我有超过200多个标签,我需要将它们的所有内容放在一个标签上(数据结构相同),但也要在其中一个列中包含标签名称(最好是A列)。这是我到目前为止所做的:

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

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

谢谢@SJR !!!但是,在每个工作表中,有1到100行,但格式化了200行(有行边界等)。所以现在发生的是这个脚本为TAB名称占用了200行(每个单元格中格式化了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