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
,以便进行检查。