Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 如何根据工作表名称将工作表保存到不同的特定文件夹_Vba_Excel - Fatal编程技术网

Vba 如何根据工作表名称将工作表保存到不同的特定文件夹

Vba 如何根据工作表名称将工作表保存到不同的特定文件夹,vba,excel,Vba,Excel,我想将工作簿中的工作表保存到指定的文件夹位置 条件将基于当前工作簿中某个工作表中基于此示例表的工作表名称。可以添加到命名约定表中 *假设文件夹与当前工作簿位于同一路径中 目前我只有这段代码,它正在保存到当前路径 Sub ExportToWorkbooks() Dim NewBook As Workbook, OldBook As Workbook, sh As Worksheet Application.ScreenUpdating = False Application.

我想将工作簿中的工作表保存到指定的文件夹位置

条件将基于当前工作簿中某个工作表中基于此示例表的工作表名称。可以添加到命名约定表中

*假设文件夹与当前工作簿位于同一路径中

目前我只有这段代码,它正在保存到当前路径

Sub ExportToWorkbooks()
 Dim NewBook As Workbook, OldBook As Workbook, sh As Worksheet

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual


    Set OldBook = ThisWorkbook

    For Each sh In OldBook.Worksheets
        If sh.Visible = True Then
            sh.Copy
            ActiveWorkbook.SaveAs Filename:=OldBook.Path & "\" & sh.Name, FileFormat:=xlWorkbookNormal
            ActiveWorkbook.Close
        End If
    Next

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub

如果该表位于名为“MainSheet”的工作表中,并且在C列中指定的文件夹位于当前路径内,则以下操作可能有效。您应该添加错误处理程序,例如在表中指定的文件夹或工作表不存在的情况下

Option Explicit
Sub ExportToWorkbooks()
    Dim OldBook As Workbook
    Dim LastRow As Long, i As Long
    Dim TheSheetToSave As String, TheFileName As String, TheFilePath As String

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual

    Set OldBook = ThisWorkbook
    'Find last row of table
    LastRow = OldBook.Worksheets("MainSheet").Cells(Rows.Count, 1).End(xlUp).Row

    'Scan all rows of table
    For i = 2 To LastRow 'Start in second row. First row for titles
        TheSheetToSave = OldBook.Worksheets("MainSheet").Cells(i, 1).Value
        TheFileName = OldBook.Worksheets("MainSheet").Cells(i, 2).Value
        TheFilePath = OldBook.Worksheets("MainSheet").Cells(i, 3).Value

        Worksheets(TheSheetToSave).Copy
        ActiveWorkbook.SaveAs Filename:=OldBook.Path & "\" & TheFilePath & "\" & TheFileName, FileFormat:=xlWorkbookNormal
        ActiveWorkbook.Close
    Next i

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub

谢谢你的快速回答!我只是想知道这是否是执行查找的首选方法?这意味着表值被用作与工作表名称匹配的源,而不是相反。在表中写入工作表名称存在一个问题,即您必须确保工作表存在,因此我同意您的建议。问题是要设置文件夹,我将与表一起使用该文件夹。我想我会使用您的代码(
针对每个sh
),在表中查找工作表名称,如果名称存在,请选择文件夹。如果图纸nema不存在,请指定一个文件夹,如
NotDefined
,以便进行检查。