Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将前3列从不同工作表复制到单个文件_Vba_Excel_Worksheet - Fatal编程技术网

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

Vba 将前3列从不同工作表复制到单个文件,vba,excel,worksheet,Vba,Excel,Worksheet,我有一堆数据集,它们的工作表总是一样的 现在我想为每个工作表创建一个不同的文件。我发现一些代码正是这样做的: 但是,我也只想要这些工作表的前三列,最好总是从第2行开始 谁能给我指一下正确的方向吗。例如,关于如何更改我发布的代码。请尝试以下代码: Sub Splitbook() Application.ScreenUpdating = False Dim myPath As String Dim rng As Range Dim sht As Worksheet

我有一堆数据集,它们的工作表总是一样的

现在我想为每个工作表创建一个不同的文件。我发现一些代码正是这样做的:

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

谁能给我指一下正确的方向吗。例如,关于如何更改我发布的代码。

请尝试以下代码:

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

我没有看到该链接中的代码,我只看到一个功能区管理的加载项。用VBA做这件事不会太难。让我指给你Alt+F11,VBA在你的支配下。现在,作为一个程序员,StAcExver是程序员的一个平台,我希望您能够编写代码,考虑到这一点,请考虑使用Excel电子表格窗口中的记录宏按钮来记录要编码的活动。停止录制并切换到VBA窗口以查看结果,然后使用该窗口自动执行您的想法。