我有一个包含 75 个选项卡的 excel 电子表格——每个选项卡的格式相同,包含两列单词。我希望所有这些数据都在一个页面上,但我不知道如何以编程方式从每个选项卡中提取表格并将其粘贴到单个选项卡上。
有没有办法在 Excel 中做到这一点?
好的,这是我尝试过的代码:
Sub Macro5()
Range("A1:B30").Select
Selection.Copy
Sheets("Table 1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
End Sub
所有选项卡的格式都相同,所有单元格中的数据都来自 A1:B30。我在想 Selection.End 命令将转到下一个可用的打开单元格,并将后续选项卡中的数据粘贴到该单元格中。
截至目前,我需要转到每个选项卡并单独运行此宏,但它不起作用,因为它说粘贴的数据与现有数据的类型/格式不同。
有任何想法吗?
编码尝试#2-成功!!!
Sub Macro5()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.activate
Range("A1:B30").Select
Selection.Copy
Sheets("Table 1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
On Error Resume Next 'Will continue if an error results
Next ws
End Sub
好吧,我不想承认我很高兴你不只是用勺子喂给我答案。看好你,先生。
编码尝试#3-避免选择
Sub Macro5()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Set Rng = ws.Range("A1:B30")
Rng.Copy
Dim ws1 As Worksheet
Set ws1 = Worksheets("Table 1")
ws1.Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
On Error Resume Next 'Will continue if an error results
Next ws
End Sub
不太正确——它仍然有效,但我不确定当我进入第一个工作簿时如何避免使用“选择”。有没有办法引用最接近的没有内容的单元格?我知道“结束”键可以做到这一点,但有没有基于非选择的方式?