我用来隐藏所有内容并定义宽度和高度的代码如下:
Sub UIHide()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.WindowState = xlNormal
.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"",False)"
.CommandBars("Full Screen").Visible = False
.CommandBars("Worksheet Menu Bar").Enabled = False
.DisplayStatusBar = False
.DisplayScrollBars = False
.DisplayFormulaBar = False
.Width = 800
.Height = 450
End With
With ActiveWindow
.DisplayWorkbookTabs = False
.DisplayHeadings = False
.DisplayRuler = False
.DisplayFormulas = False
.DisplayGridlines = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = True
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
以及将所有内容重置回来的代码:
Sub UIShow()
With Application
.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"",True)"
.DisplayStatusBar = True
.DisplayScrollBars = True
.DisplayFormulaBar = True
End With
With ActiveWindow
.DisplayWorkbookTabs = True
.DisplayRuler = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
End With
End Sub
然后我调用这些宏
Private Sub Workbook_Open()
Call UIHide
End Sub
Private Sub Workbook_Activate()
Call UIHide
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call UIShow
End Sub
Private Sub Workbook_Deactivate()
Call UIShow
End Sub
当我打开文件并关闭它(并且没有其他 Excel 文件打开)时,一切都会按照我的意愿进行。该文件打开时所有内容都隐藏,当我关闭它时,它也会关闭 Excel,当我使用任何其他 Excel 文件再次打开它时,一切都会恢复正常。但是,我遇到的问题是,如果我在已经打开了另一个文件的情况下打开我的 EXCEL 应用程序样式文件,当我关闭 EXCEL 应用程序样式文件时,已打开的文件缺少滚动条,公式栏、状态栏和底部工作表选项卡。
提前谢谢
它使用用户打开的“feeder”工作簿,然后feeder工作簿可以打开一个新的Excel实例并加载App工作簿。然后喂食器关闭,让您的应用程序保持打开状态
Feeder 工作簿中所需的唯一代码用于工作簿打开事件...如下所示
Private Sub Workbook_Open()
Dim oXL As Object
Set oXL = CreateObject("Excel.Application")
oXL.Workbooks.Open ("C:\YourAPP\YourAPP.xlsm")
oXL.Visible = True
AppActivate "YourApp.xlsm" ' Brings it to Front & gives it the Focus
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close False
End If
End Sub
您可能需要一个
Application.Quit
也在您的应用程序中确保 Excel 实例关闭更新:添加了以下行 - 不在原始代码中
`AppActivate "YourApp.xlsm" ' Brings it to Front & gives it` the Focus
UIShow
代码都可以运行并工作吗?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
UIShow
End Sub
先尝试激活其他工作簿
我只是让它在关闭时在所有其他打开的工作簿上执行 UIShow。 我发现它作为单独的子程序效果最好,然后从私人子程序中调用它。
Sub othWB()
Dim WB As Workbook
If Application.Workbooks.Count > 1 Then
For Each WB In Workbooks
WB.Activate
Call UIShow
With ActiveWindow
.DisplayWorkbookTabs = True
.DisplayHeadings = True
.DisplayRuler = True
.DisplayGridlines = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
End With
Next
End If
End Sub
然后从私有关闭子中调用它:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call UIShow
Call othWB
End Sub