【问题标题】:Macro to copy worksheet irrespective of worksheet name?无论工作表名称如何,宏都可以复制工作表?
【发布时间】:2015-11-25 14:55:50
【问题描述】:

我将大量信息导出到 .csv 文件,然后下载/打开以进行操作。每个导出都按顺序编号(例如导出 (22).csv、导出 (23).csv 等,因此工作表也被赋予相同的名称/编号。

对于我打开的每个 .csv 文件,我想要一个宏来进行快速过滤、计数和复制,以便在操作之前保留一个完整的工作表并处理第二个工作表。在我的宏中,我有:

Sub Export()
'
' Export Macro
'

'
    Range("A1").Select
    Selection.AutoFilter
    Rows("2:2").Select
    ActiveWindow.FreezePanes = True
    Range("A1").Select
    Selection.End(xlDown).Select
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(3,R[-4]C:R[-1]C)"
    Range("A7").Select
    Selection.End(xlUp).Select
    Selection.End(xlUp).Select
    Range("A2").Select
    Sheets("export (87).csv").Select
    Sheets("export (87).csv").Copy After:=Sheets(1)
    Range("A1").Select
End Sub

这一切都适用于 export (87).csv,但对于下一个文件 export (88).csv 则失败。

如何使宏选择第一个工作表并复制到末尾而不考虑工作表名称?

我尝试过使用:

Sheets("Sheet1").Select
Sheets("Sheet1").Copy After:=Sheets(1)

Sheets("Sheets1").Select
Sheets("Sheets1").Copy After:=Sheets(1)

我收到 RT 错误 9 和

Sheets(Sheet1).Select
Sheets(Sheet1).Copy After:=Sheets(1)

我收到 RT 错误 13

提前感谢大家...

【问题讨论】:

    标签: excel excel-2011 vba


    【解决方案1】:

    这部分导致错误

    Sheets(Sheet1).Select
    Sheets(Sheet1).Copy After:=Sheets(1)
    

    正确的语法是:

    Activeworkbook.Worksheets(1).Activate
    ActiveSheet.Copy After:=ActiveSheet
    

    编辑:更改代码,使其不使用工作表的名称

    【讨论】:

    • 谢谢,但这是我想避免的 - 必须使用工作表的实际名称 - 我希望可以以某种方式使用工作表的代号?
    • @ShorTControlleR 我已经更改了代码,让我知道它是否有效
    • 完美!这正是我一直在寻找的。感谢您对此的帮助
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多