如何计算纸张是一种数字方式,与名称无关,操作与复制或移动无关
How to count sheets is a numeric way regardless of name and the operate as in copy or move
代码及其目的是(下面的代码,sub ed)查看 workbook/file 名称为 'PR11_P3.xlsm' 的 window,然后计数到最后一个 sheet 和 select 它。将其移动(不是复制)到一个新文件中并将其保存到 path/destination。这按预期工作。
当不是最后一个时我遇到了错误 sheet 这是我现在发布这个问题的目标,最好的情况是(我想做一个 IF)如果有不止一个 sheet,按原样执行 cod,但是如果只有一个 sheet 或超过 2 个 sheet,则复制当前的 sheet 而不是移动到新文件并另存为,关闭文件。
有什么建议吗?基本上我想确保没有代码输出 sheet 计数错误原因的情况,并且由于第二个 sheet 的名称总是不同,所以这是我唯一合乎逻辑的方法,但我认为是非常混乱,如前所述,它根本不起作用 - 我需要专家指导。
感谢您的帮助!
我的代码
Sub ED() 'Export last sheet into new file in the background, save as and close
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Move
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
我认为我的代码应该是这样的,但是我在这里做得不是很好,因为有错误而且它 运行 不正确。
Sub ED_IF()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Sheets(Sheets.Count) =< 3 Then 'not more than two sheets
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Move
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Else
If Sheets(Sheets.Count) = 1 or => 2 Then 'basically if there is only one sheet or more than 2 sheets, so it can be any number above 2
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Copy
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
像这样:
Sub ED() 'Export last sheet into new file in the background, save as and close
Dim wb As Workbook, ws As Worksheet, wbNew As Workbook, nSheets As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = Workbooks("PR11_P3.xlsm") 'or ThisWorkbook?
nSheets = wb.Worksheets.Count
Set ws = wb.Worksheets(nSheets) 'sheet to copy/move
With Workbooks.Add(xlWBATWorksheet) 'add a new workbook with 1 sheet
Select Case nSheets
Case 1: ws.Copy after:=.Sheets(1)
Case Else: ws.Move after:=.Sheets(1)
End Select ' fixed
.Sheets(1).Delete 'remove the empty sheet
.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
代码及其目的是(下面的代码,sub ed)查看 workbook/file 名称为 'PR11_P3.xlsm' 的 window,然后计数到最后一个 sheet 和 select 它。将其移动(不是复制)到一个新文件中并将其保存到 path/destination。这按预期工作。
当不是最后一个时我遇到了错误 sheet 这是我现在发布这个问题的目标,最好的情况是(我想做一个 IF)如果有不止一个 sheet,按原样执行 cod,但是如果只有一个 sheet 或超过 2 个 sheet,则复制当前的 sheet 而不是移动到新文件并另存为,关闭文件。
有什么建议吗?基本上我想确保没有代码输出 sheet 计数错误原因的情况,并且由于第二个 sheet 的名称总是不同,所以这是我唯一合乎逻辑的方法,但我认为是非常混乱,如前所述,它根本不起作用 - 我需要专家指导。
感谢您的帮助!
我的代码
Sub ED() 'Export last sheet into new file in the background, save as and close
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Move
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
我认为我的代码应该是这样的,但是我在这里做得不是很好,因为有错误而且它 运行 不正确。
Sub ED_IF()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Sheets(Sheets.Count) =< 3 Then 'not more than two sheets
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Move
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
Else
If Sheets(Sheets.Count) = 1 or => 2 Then 'basically if there is only one sheet or more than 2 sheets, so it can be any number above 2
Windows("PR11_P3.xlsm").Activate
Sheets(Sheets.Count).Copy
ActiveWorkbook.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
像这样:
Sub ED() 'Export last sheet into new file in the background, save as and close
Dim wb As Workbook, ws As Worksheet, wbNew As Workbook, nSheets As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = Workbooks("PR11_P3.xlsm") 'or ThisWorkbook?
nSheets = wb.Worksheets.Count
Set ws = wb.Worksheets(nSheets) 'sheet to copy/move
With Workbooks.Add(xlWBATWorksheet) 'add a new workbook with 1 sheet
Select Case nSheets
Case 1: ws.Copy after:=.Sheets(1)
Case Else: ws.Move after:=.Sheets(1)
End Select ' fixed
.Sheets(1).Delete 'remove the empty sheet
.SaveAs Filename:="C:\Temp\PR\Export\Bok1.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub