【问题标题】:Filter, copy and paste special in new Excel worksheet在新的 Excel 工作表中进行特殊筛选、复制和粘贴
【发布时间】:2014-07-02 22:33:36
【问题描述】:

我想在 Excel 文档的所有工作表中使用 VBS,它将执行以下操作:

  1. 过滤表格
  2. 复制过滤后的内容
  3. 创建新工作表
  4. 仅粘贴特殊值并保存为 csv 文件

我尝试使用此代码实现此目的,但它不起作用

With excelObject1
    .Application.DisplayAlerts = False

    for each x in excelObject1.WorkSheets

        x.Rows(1).AutoFilter 1, "type 1"
        x.Range("A1:E41").Copy
        .WorkSheets.Add
        .ActiveWorksheet.Range("A1").PasteSpecial -4122
        .ActiveWorkbook.SaveAs home_directory+x.Name + ".csv", 23

    Next 

    .Quit
    .Application.DisplayAlerts = True
End With

它给出错误(对象不支持此属性或方法:'ActiveWorksheet'),如果我删除 ActiveWorksheet 前面的点,则它给出错误(变量未定义'ActiveWorksheet') 我不知道如何在“for each x”中创建新的工作表。 也许这不是我应该这样做的方式? 我尝试使用 VBS 来做到这一点,但如果有人可以帮助我即使使用 VBA 也能做到这一点,那就太好了。我的 Excel 是 2013 年。

【问题讨论】:

    标签: excel vbscript excel-2013


    【解决方案1】:

    Worksheet 对象没有ActiveWorksheet 属性,但Application 对象具有ActiveSheet 属性。 ActiveWorkbook 属性也是如此。我还强烈建议使用& 而不是+ 进行字符串连接。

    改变这个:

    .ActiveWorksheet.Range("A1").PasteSpecial -4122
    .ActiveWorkbook.SaveAs home_directory+x.Name + ".csv", 23
    

    进入任何一个:

    excelObject1.ActiveSheet.Range("A1").PasteSpecial -4122
    excelObject1.ActiveWorkbook.SaveAs home_directory & x.Name & ".csv", 23
    

    或者这个:

    .Application.ActiveSheet.Range("A1").PasteSpecial -4122
    .Application.ActiveWorkbook.SaveAs home_directory & x.Name & ".csv", 23
    

    【讨论】:

    • 这真的很有帮助
    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多