从打开的工作簿中的单个 sheet 创建新的 Excel 工作簿

Create new Excel workbook blind from a single sheet in an open workbook

我正在尝试从打开的 sheet 创建一个新的 Excel 文件。我在这里经历了几种解决方案,但其中 none 完全符合我的需要。我不太擅长 Excel 磁盘上的文件交互。这是 Excel 2010 年。

  1. 我有一些 VBA 代码可以将相关数据写入新的 sheet(比如 Sheet3)。
  2. 然后,我想将所有 Sheet3 写入给定文件夹(假设为 F:\test)
  3. 中的新 Excel 文件 "output.xlsx"
  4. 我希望该过程能够盲目创建 xlsx 文件、填充 Sheet1、保存并关闭文件,而用户永远不会看到打开的 output.xlsx 文件。

编辑#2:使用这个确切的代码:

Dim FPath As String, FName As String, filenamex As String
Dim NewBook As Workbook

Application.DisplayAlerts = False
Application.ScreenUpdating = False

FPath = "F:\test\"
FName = "output" & ".xlsx"
filenamex = FPath & FName
Set NewBook = Workbooks.Add
Worksheets("Sheet3").Range("A1:N100").Copy 
Destination:=NewBook.Worksheets("Sheet1").Range("A1")
Application.CutCopyMode = False
NewBook.Close savechanges:=True, Filename:=filenamex

Application.DisplayAlerts = True
Application.ScreenUpdating = True

结果 #2: (a) excel 文件 output.xls 已创建并保存(谢谢) (b) 三个 sheet 被创建为存在于原始文件中 (c) 所有三个 sheet 仍然是空白。我只需要从原始文件复制的Sheet3。

谢谢

首先,您可以关闭 ScreenUpdating

Sub copy_to_new()
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Dim FPath As String, FName As String, filenamex As String
Dim NewBook As Workbook, oldBook as Workbook

Set oldBook = ActiveWorkbook 
'Or use `ThisWorkbook` if you're running this code from the workbook you want to copy from.

FPath = "F:\test\"
FName = "output.xls"
filenamex = FPath & FName
Set NewBook = Workbooks.Add
oldBook.Worksheets("Sheet3").Range("A1:N100").Copy Destination:=NewBook.Worksheets("Sheet1").Range("A1")
Application.CutCopyMode = False

' We can use the .Close command to close and save the file in one line
NewBook.Close savechanges:=True, Filename:=filenamex

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub