将数据从一个工作簿复制到新工作簿并按特定标题保存

时间:2013-09-08 18:23:23

标签: database excel excel-vba copy-paste vba

我有一个数据库文件,包含来自不同班级的所有学生的数据。我希望excel通过将数据从数据库复制到新文件来制作类明智的文件...我使用下面提到的代码,这些工作完美但它只处理数据直到G列,现在数据已扩展到Z列并且它不起作用给我运行时错误。

“注意列B小类”即新保存文件的Tittle

Sub proSaveDateClasswise()

Range("I1").Value = "Class"
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, copyToRange:=Columns( _
    "I:I"), unique:=True
Range("J1").Value = "Class"

Dim cell As Range
Dim curPath As String

curPath = ActiveWorkbook.Path & "\Extracted Files\\"

If Len(Dir(curPath, vbDirectory)) = 0 Then
    MkDir (curPath)
End If

Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each cell In Range("I:I")
    If cell.Value <> "Branch" And cell.Value <> "" Then
        Range("J2").Value = cell.Value
        Range("A:G").AdvancedFilter Action:=xlFilterCopy, _
            criteriarange:=Range("J1:J2"), copyToRange:=Range("L:R"), unique:=False
        Range(Range("L1:R1"), Range("L1:R1").End(xlDown)).Copy
        Workbooks.Add
        ActiveSheet.Paste
        ActiveWorkbook.SaveAs Filename:=curPath & cell.Value & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close
        Range(Range("L1:R1"), Range("L1:R1").End(xlDown)).ClearContents
    End If
Next cell

Columns("I:R").Delete

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

1 个答案:

答案 0 :(得分:0)

我认为在我们进一步讨论之前的主要问题是你当前的宏使用G以外的一些列来选择唯一的类。这意味着必须重写整个代码才能使其按预期工作。我建议你提供一些带有虚拟数据的输入和输出文件。