在新的Excel工作表中筛选,复制和粘贴特殊内容

时间:2014-07-02 12:57:32

标签: excel vbscript excel-2013

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

  1. 过滤表格
  2. 复制过滤的内容
  3. 创建新工作表
  4. 仅粘贴特殊值并另存为csv文件
  5. 我尝试使用此代码实现此功能,但它不起作用

    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& #39) 我不知道如何在每个x"中创建新的工作表。 也许这不是我做的方式吗? 我尝试用VBS做到这一点,但是如果有人能够通过VBA告诉我这样做会很棒。我的Excel是2013年。

1 个答案:

答案 0 :(得分:0)

Worksheet个对象没有ActiveWorksheet属性,但Application对象具有属性ActiveSheetActiveWorkbook属性也是如此。我还强烈建议您使用&代替+进行字符串连接。

改变这个:

.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