从打开的工作簿中的单个 sheet 创建新的 Excel 工作簿
Create new Excel workbook blind from a single sheet in an open workbook
我正在尝试从打开的 sheet 创建一个新的 Excel 文件。我在这里经历了几种解决方案,但其中 none 完全符合我的需要。我不太擅长 Excel 磁盘上的文件交互。这是 Excel 2010 年。
- 我有一些 VBA 代码可以将相关数据写入新的 sheet(比如 Sheet3)。
- 然后,我想将所有 Sheet3 写入给定文件夹(假设为 F:\test)
中的新 Excel 文件 "output.xlsx"
- 我希望该过程能够盲目创建 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
我正在尝试从打开的 sheet 创建一个新的 Excel 文件。我在这里经历了几种解决方案,但其中 none 完全符合我的需要。我不太擅长 Excel 磁盘上的文件交互。这是 Excel 2010 年。
- 我有一些 VBA 代码可以将相关数据写入新的 sheet(比如 Sheet3)。
- 然后,我想将所有 Sheet3 写入给定文件夹(假设为 F:\test) 中的新 Excel 文件 "output.xlsx"
- 我希望该过程能够盲目创建 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