从打开的工作簿中的单个工作表盲创建新的 Excel 工作簿
Posted
技术标签:
【中文标题】从打开的工作簿中的单个工作表盲创建新的 Excel 工作簿【英文标题】:Create new Excel workbook blind from a single sheet in an open workbook 【发布时间】:2019-02-25 21:30:30 【问题描述】:我正在尝试从打开的工作表创建一个新的 Excel 文件。我在这里经历了几种解决方案,但没有一个能完全满足我的需要。我对磁盘上的 Excel 文件交互不太擅长。这是 Excel 2010。
-
我有一些 VBA 代码可以将相关数据写入新工作表(比如 Sheet3)。
然后,我想将 Sheet3 的所有内容写入给定文件夹中的一个新 Excel 文件“output.xlsx”(比如说 F:\test)
我希望该过程能够盲目地创建 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) 创建原始文件中存在的三个工作表 (c) 所有三张纸仍然是空白的。我只需要从原始文件中复制的 Sheet3。
谢谢
【问题讨论】:
但它不起作用......这很模糊。什么不工作?它在做什么/不做什么你期望的?如果您为我们创建minimal reproducible example,这将有助于我们更清楚地为您提供帮助。我看到的一件事是,从.Copy
过程中删除PasteSpecial(xlPasteValues)
将使该行根据需要将数据复制到目的地
谢谢斯科特。编辑原件
编辑 #2 - 感谢保存并关闭 @BruceWayne
(请不要使用解决方案编辑您的问题。相反,您可以通过单击帖子左侧的复选标记将工作代码标记为答案。编辑原始帖子有效地删除了问题,并且让未来的用户很难看到您的问题是什么,以及它是如何解决的。)
知道了 BruceWayne - 谢谢。但我们还没有解决。结果表仍然是空白的。请参阅编辑#2
【参考方案1】:
首先,您可以关闭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
【讨论】:
您需要在Worksheets("Sheet3").Range("A1:N100").Copy
这一行中限定工作簿。正如所写的那样,它将从NewBook
复制Sheet3,因为它是执行现场的活动书。
@ScottHoltzman - 啊!不知道我是怎么错过的,谢谢你抓住它。
@ScottHoltzman - 查看我对我的编辑的编辑...我不确定 OP 是否正在运行要复制的工作簿中的代码,因此默认为 ActiveWorkbook
。以上是关于从打开的工作簿中的单个工作表盲创建新的 Excel 工作簿的主要内容,如果未能解决你的问题,请参考以下文章
如何在保存到 OneDrive 的 Excel 工作簿中运行 SQL 查询?
Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码
在单个文件中的所有打开的工作簿中重新使用带有“Worksheet_Change”事件的 VBA 宏
有没有办法将 excel 工作簿中的单个工作表导出到使用 pandas 分隔 csv 文件?