gpt4 book ai didi

vba - 如何在不关闭调用工作簿的情况下使用VBA SaveAs?

转载 作者:行者123 更新时间:2023-12-01 18:14:34 27 4
gpt4 key购买 nike

我想要:

  • 使用模板工作簿进行数据操作
  • 将此工作簿的副本另存为 .xlsx(SaveCopyAs 不允许您更改文件类型,否则就太好了)
  • 继续显示原始模板(不是“另存为”模板)

使用SaveAs 完全符合预期 - 它在删除宏的同时保存工作簿,并向我显示新创建的 SavedAs 工作簿的 View 。

不幸的是,这意味着:

  • 除非重新打开启用宏的工作簿,否则我将不再查看它
  • 代码执行此时停止,因为
  • 如果我忘记保存,任何宏更改都会被丢弃(注意:对于生产环境来说这是可以的,但是对于开发来说,这是一个巨大的痛苦)

有什么办法可以做到这一点吗?

'current code
Application.DisplayAlerts = False
templateWb.SaveAs FileName:=savePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
templateWb.Activate
Application.DisplayAlerts = True

'I don't really want to make something like this work (this fails, anyways)
Dim myTempStr As String
myTempStr = ThisWorkbook.Path & "\" & ThisWorkbook.Name
ThisWorkbook.Save
templateWb.SaveAs FileName:=savePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
Workbooks.Open (myTempStr)

'I want to do something like:
templateWb.SaveCopyAs FileName:=savePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'SaveCopyAs only takes one argument, that being FileName

另请注意,虽然 SaveCopyAs 会让我将其保存为不同类型(即 templateWb.SaveCopyAs FileName:="myXlsx.xlsx"),但打开时会出现错误因为它现在的文件格式无效。

最佳答案

这是一种比使用 .SaveCopyAs 创建副本然后打开该副本并另存为更快的方法...

正如我的评论中提到的,此过程大约需要 1 秒才能从包含 10 个工作表的工作簿创建 xlsx 副本(每个工作表有 100 行 * 20 列数据)

Sub Sample()
Dim thisWb As Workbook, wbTemp As Workbook
Dim ws As Worksheet

On Error GoTo Whoa

Application.DisplayAlerts = False

Set thisWb = ThisWorkbook
Set wbTemp = Workbooks.Add

On Error Resume Next
For Each ws In wbTemp.Worksheets
ws.Delete
Next
On Error GoTo 0

For Each ws In thisWb.Sheets
ws.Copy After:=wbTemp.Sheets(1)
Next

wbTemp.Sheets(1).Delete
wbTemp.SaveAs "C:\Blah Blah.xlsx", 51

LetsContinue:
Application.DisplayAlerts = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub

关于vba - 如何在不关闭调用工作簿的情况下使用VBA SaveAs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com