由于新的保存提示,使用 VBA 将 xlsm 保存为 xlsx 不再有效

问题描述 投票:0回答:1

我们有一个 xlsm 文件,它处理一些数据并最终将文件作为 xlsx 保存在不同的文件夹中。

之前保存为非宏工作簿时的保存提示有 3 个选项:“是”、“否”和“帮助”,默认是“是”意味着我们保存并丢弃代码,但现在提示有 4 个选项“返回” " 作为默认值,因此 vba 代码失败

?那么我们如何恢复旧的提示版本呢?

?或者,新提示中的默认选项可以是“保存和丢弃功能”吗?

(抱歉,我只有该提示的丹麦语版本,所以我的翻译可能不准确)

?你们中有人知道这个新提示来自哪里吗?它是否在 Application.Dialogs 集合中?如果是,它叫什么?

请注意,我不是在谈论第一个提示,而是在谈论第二个提示 - 在按“保存”按钮后

“以下功能无法保存在无宏工作簿中”(见下图)

这是从 3 个按钮改为 4 个按钮的按钮,默认选项为“后退”

该代码已运行多年,但现在 - 对于某些用户 - Excel 在尝试另存为无宏工作簿时显示不同的提示。 因此,设置 Application.DisplayAlerts = False 不起作用,因为它选择默认选项,在出现新提示的情况下会返回,然后代码中会出现错误

在出现此提示的计算机上,VBA 代码可以正常工作,因为“是”是默认选择:

在出现此提示的计算机上,VBA 代码会失败,因为“Gå tilbage”(=“返回”)是默认选择:

失败的保存部分的示例代码:

Sub saveas()


Dim fil As String, path As String
Dim wb As Workbook
Dim Nyfil As String

Set wb = ThisWorkbook

fil = wb.Name
path = wb.path

Nyfil = Replace(fil, ".xlsm", ".xlsx", , , vbTextCompare)

wb.Save

Application.DisplayAlerts = False
wb.saveas Filename:=path & "\" & Nyfil, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True

End Sub
excel vba save-as excel-365
1个回答
0
投票

仅当您的工作表模块中没有代码时,以下内容才有效,但也许它对您或其他人有帮助。该代码会将所有工作表复制到新工作簿中并保存该新工作簿。但是,复制工作表也会复制工作表中的代码,因此如果工作表包含代码,您将再次面临同样的问题。

如果您的工作簿包含隐藏工作表并且您也想复制它们,则必须暂时将它们设为可见,否则它们将不会被复制。

Sub copyAsMacrofreeWB()

    Dim i As Long
    ReDim sheetsVisible(1 To ThisWorkbook.Sheets.Count) As XlSheetVisibility
    
    ' Unhide all sheets
    For i = 1 To ThisWorkbook.Worksheets.Count
        sheetsVisible(i) = ThisWorkbook.Worksheets(i).Visible
        Dim ws As Worksheet
        ThisWorkbook.Worksheets(i).Visible = xlSheetVisible
    Next

    Dim newName As String
    newName = Replace(ThisWorkbook.FullName, ".xlsm", "macrofree.xlsx")
    
    ThisWorkbook.Sheets.Copy
    Dim newWB As Workbook
    Set newWB = ActiveWorkbook
    newWB.SaveAs newName, FileFormat:=xlOpenXMLWorkbook
    
    ' Hide sheets
    For i = 1 To ThisWorkbook.Worksheets.Count
        ThisWorkbook.Worksheets(i).Visible = sheetsVisible(i)
        newWB.Worksheets(i).Visible = sheetsVisible(i)
    Next
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.