gpt4 book ai didi

vba - 如何在不关闭当前文件的情况下保存无宏副本?

转载 作者:行者123 更新时间:2023-12-04 20:10:37 27 4
gpt4 key购买 nike

我正在尝试保存 ThisWorkbook 的副本在 xlsx在使用 SaveCopyAs 时.问题是 SaveCopyAs将文件保存为启用宏的文件,xlsb在我的情况下,这是不希望的,而 SaveAs做我需要的,它也会关闭ThisWorkbook .

有没有更简单的方法可以保存为不支持宏且不采取变通方法的格式?

目前我找到的最佳解决方案是下面的代码片段,但它有点挑剔,它不保存 ContentTypeProperties我需要在项目中进一步,所以确实需要再次添加。

任何想法表示赞赏,谢谢!

Dim sPath as String

sPath = ThisWorkbook.FullName
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sFileName & ".xlsx", 51
Application.Workbooks.Open (sPath)
Application.DisplayAlerts = True
Exit Sub

最佳答案

  • 定义您的路径 sPath = ThisWorkbook.Path & "\" & sFileName无扩展
  • 使用ThisWorkbook.SaveCopyAs sPath & ".xlsm"保存副本。
  • 使用 Set Wb = Application.Workbooks.Open(sPath & ".xlsm") 打开该副本
  • 不使用 Wb.SaveAs sPath & ".xlsx", xlOpenXMLWorkbook 再次保存
  • 关闭工作簿 Wb.Close SaveChanges:=False

  • 因此,类似以下内容应该可以工作,并且可以让您当前的代码保持运行,而不会重新打开当前工作簿的任何副作用。
    Dim sPath As String
    sPath = ThisWorkbook.Path & "\" & sFileName 'no extension!

    ThisWorkbook.SaveCopyAs sPath & ".xlsm"
    Dim Wb As Workbook
    Set Wb = Application.Workbooks.Open(sPath & ".xlsm")
    Wb.SaveAs sPath & ".xlsx", xlOpenXMLWorkbook
    Wb.Close SaveChanges:=False

    也许你想删除 xlsm文件副本
    Kill sPath & ".xlsm"

    您可能想使用 Application.DisplayAlerts = FalseApplication.ScreenUpdating = False .

    关于vba - 如何在不关闭当前文件的情况下保存无宏副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49644685/

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