将不同工作表中的前3列复制到单个文件

时间:2013-03-20 15:30:09

标签: excel vba excel-vba worksheet

我有一堆数据集,总是有相同的工作表。

现在我想为每个工作表创建一个不同的文件。我找到了一些代码:http://www.extendoffice.com/documents/excel/628-excel-split-workbook.html#kutools

但是,我也只想要这些工作表的前三列,最好总是从第2行开始。

有人能指出我正确的方向吗?例如。关于如何更改我发布的代码。

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

Sub Splitbook()

    Application.ScreenUpdating = False

    Dim myPath As String
    Dim rng As Range
    Dim sht As Worksheet
    Dim lastRow As Long
    Dim wkb As Workbook

    For Each sht In ThisWorkbook.Sheets

        lastRow = sht.Range("A6500").End(xlUp).Row
        If lastRow < 2 Then GoTo nextSht

        Set rng = sht.Range("A2:C" & lastRow)
        If Not rng Is Nothing Then
            Set wkb = Workbooks.Add
            rng.Copy wkb.Sheets(1).Range("A2")
            myPath = filePath(sht.Name)
            wkb.SaveAs Filename:=myPath
            wkb.Close
            Set wkb = Nothing
            Set rng = Nothing
        End If

nextSht:
    Next

    Application.ScreenUpdating = True
End Sub

Function filePath(worksheetname As String) As String

    Dim fso As Object, MyFolder As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    MyFolder = ThisWorkbook.Path & "\Reports"


    If fso.FolderExists(MyFolder) = False Then
        fso.CreateFolder (MyFolder)
    End If

    MyFolder = MyFolder & "\" & Format(Now(), "MMM_YYYY")
    If fso.FolderExists(MyFolder) = False Then
        fso.CreateFolder (MyFolder)
    End If


    filePath = MyFolder & "\" & worksheetname & Format(Now(), "DD-MM-YY hh.mm.ss") & ".xlsx"
    Set fso = Nothing

End Function
相关问题