如何阻止VBA脚本生成的Excel新工作簿自动打开?
如何阻止VBA生成的新工作簿自动打开?
你的VBA脚本能正常将指定内容保存为新工作簿,但生成的文件会自动保持打开状态。核心问题在于原代码通过Workbooks.Add创建新工作簿的方式会在前台显示窗口,只需调整操作逻辑即可解决,修改后的完整代码及说明如下:
Sub CopyWorksheetToNewWorkbook() Dim originalWorksheet As Worksheet Dim newWorkbook As Workbook Dim newName As String On Error Resume Next Set originalWorksheet = ThisWorkbook.Sheets("AUDITEUR") If originalWorksheet Is Nothing Then MsgBox "源工作表未找到!", vbExclamation Exit Sub End If On Error GoTo 0 newName = originalWorksheet.Range("A2").Value If newName = "" Then MsgBox "单元格A2中未找到文件名!", vbExclamation Exit Sub End If ' 关闭屏幕更新,避免新工作簿窗口闪烁显示 Application.ScreenUpdating = False ' 直接复制工作表生成新工作簿(不带参数时自动创建仅含该工作表的新文件) originalWorksheet.Copy Set newWorkbook = ActiveWorkbook ' 重命名工作表 newWorkbook.Sheets(1).Name = "AUDITEUR" Application.DisplayAlerts = False ' 保存新工作簿到指定路径 newWorkbook.SaveAs "C:\Users\pjpomerleau\OneDrive - Genuine Parts Company\1- OPÉRATIONS\PSS\TEST AUDIT\" & newName & ".xlsx" ' 保存后直接关闭新工作簿,无需再次提示 newWorkbook.Close SaveChanges:=False Application.DisplayAlerts = True ' 恢复屏幕更新 Application.ScreenUpdating = True End Sub
关键修改说明:
- 替换
Workbooks.Add为originalWorksheet.Copy:不带参数的Copy方法会直接生成仅包含目标工作表的新工作簿,省去创建空工作簿再删除默认表的步骤。 - 添加屏幕更新控制:
Application.ScreenUpdating = False会在操作过程中隐藏Excel界面变化,彻底避免新工作簿窗口出现。 - 保存后立即关闭:
newWorkbook.Close SaveChanges:=False确保文件保存后直接关闭,不会留在打开状态。
内容的提问来源于stack exchange,提问作者Pierre-Jean Pomerleau
相关产品推荐
相关产品推荐

