我一直在 Office Excel 2016 中处理 .xlsb 文件。我在 VBA 项目中开发了宏,并且经过 3 个月的工作,它运行良好(文件的 v25)。
现在我需要对 VBA 宏进行一些调整。当我保存并关闭文件时,下次打开文件时 VBA 代码更改会丢失(尽管 Windows 识别出正确的上次保存日期)。
该文件在 Workbook_Open 和 Workbook_BeforeClose 事件中确实有宏,但自从它工作正常以来没有任何改变。值得注意的是,VBA 项目中没有 Workbook_BeforeSave 事件。
我尝试过的故障排除步骤:
- 部分删除 Workbook_BeforeClose 事件,然后完全删除
- 从头开始创建新文件并在 VBA 代码中复制
- 在 VBA 编辑器窗口和 Excel 应用程序窗口中保存
- 另存为新文件名
这是整个 ThisWorkbook 模块,以防万一:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Picking").Delete
Sheets("Ordering").Delete
Clear_UI
Dim UI As Worksheet
Set UI = Sheets("User Interface")
With UI
.Shapes("Menu_StartNewEvent").OnAction = ""
.Shapes("Menu_UpdateEvent").OnAction = ""
.Shapes("Menu_ProduceSheets").OnAction = ""
.Shapes("Menu_CountIn").OnAction = ""
.Shapes("Menu_EditPackages").OnAction = ""
.Shapes("Menu_EditCocktails").OnAction = ""
.Shapes("Menu_EditInventory").OnAction = ""
End With
Unhide_Them
Set UI = Sheets("Inventory Editor")
UI.Shapes("SaveButton").OnAction = ""
Set UI = Sheets("Cocktail Editor")
UI.Shapes("SaveButton").OnAction = ""
Set UI = Sheets("Package Editor")
UI.Shapes("SaveButton").OnAction = ""
Hide_Them
Application.DisplayAlerts = True
ThisWorkbook.Save
End Sub
Private Sub Workbook_Open()
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Windows.Item(1).Caption = Replace(ThisWorkbook.Windows.Item(1).Caption, " [Repaired]", "")
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Name, AccessMode:=xlExclusive
ThisWorkbook.Saved = True
Application.DisplayAlerts = True
Dim UI As Worksheet
Set UI = Sheets("User Interface")
With UI
.Activate
.Shapes("Menu_StartNewEvent").OnAction = "ThisWorkbook.Start_New_Order"
.Shapes("Menu_UpdateEvent").OnAction = "ThisWorkbook.Update_Event_Details"
.Shapes("Menu_ProduceSheets").OnAction = "ThisWorkbook.Build_Only_Picking_Sheet"
.Shapes("Menu_CountIn").OnAction = "ThisWorkbook.Build_Only_Picking_Sheet"
.Shapes("Menu_EditPackages").OnAction = "Edit_Packages"
.Shapes("Menu_EditCocktails").OnAction = "Edit_Cocktails"
.Shapes("Menu_EditInventory").OnAction = "Edit_Inventory"
End With
Clear_UI
Set UI = Sheets("Inventory Editor")
UI.Shapes("SaveButton").OnAction = "Save_Inventory_Editor"
Set UI = Sheets("Cocktail Editor")
UI.Shapes("SaveButton").OnAction = "Save_Cocktail_Editor"
Set UI = Sheets("Package Editor")
UI.Shapes("SaveButton").OnAction = "Save_Package_Editor"
Hide_Them
End Sub
我在这里查看了问题/答案:StackOverflow:xla-file-not-saving-in-excel-2010