将一个工作簿中的命名工作表保存到同一文件夹中的新工作簿

时间:2013-11-19 16:44:06

标签: excel vba excel-vba copy-paste

我希望能够

  1. 在名为的给定工作簿中获取名为“data”的工作表 “original_data.xlsm”,
  2. 有条件地复制(使用Autofilter或     别的东西),只说那些C列是“狗”的行
  3. 在与原始图书相同的文件夹中创建一个名为dog.xlsm的新工作簿,并将复制的内容保存到其中     一张名为“狗数据”的新表。
  4. 然后用不同的过滤器重复。例如复制和 autofilter如果列C是“cat”并在与原始书籍相同的文件夹中创建一个工作簿“cat.xlsm”,其中包含一个名为“cat_data”的工作表,其中包含一些过滤数据。
  5. 我已经做了三天不正确的尝试,并希望得到一些帮助。这是我到目前为止所做的。

    Workbooks.Add
    Set wb = ActiveWorkbook
    GetBook = ActiveWorkbook.Name
    wb.Sheets("data").SaveAs Workbooks(GetBook).Path & "\dog" 
    
    Workbooks("dog.xlsx").Worksheets("Sheet1").UsedRange.AutoFilter Field:=3, Criteria1:="=dog"
    

    但它不起作用。 :(

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试将wb设置为“original_data.xlsm”,但您的第一行是将新工作簿设置为活动工作簿。

Workbooks.Add
Set wb = ActiveWorkbook

看看这是否有帮助。

Sub sheetCopy()
    Dim wbS As Workbook, wbT As Workbook
    Dim wsS As Worksheet, wsT As Worksheet

    Set wbS = ThisWorkbook 'workbook that holds this code
    Set wsS = wbS.Worksheets("Data")

    wsS.Copy
    Set wbT = ActiveWorkbook 'assign reference asap

    Set wsT = wbT.Worksheets("Data")
    wsT.Name = "Dog Data" 'rename sheet

    wbT.SaveAs wbS.Path & "\dog.xlsx" 'save new workbook
    wsT.UsedRange.AutoFilter Field:=3, Criteria1:="=dog"
End Sub