Excel VBA 在我打开的文件中隐藏 Excel 工具栏、功能区等,而不会弄乱任何其他打开的工作簿
Excel VBA Hide Excel Toolbars, Ribbon, etc. in a file i'm opening without messing up any other open Workbooks
我正在使用以下代码隐藏所有栏并打开工作簿以提供应用程序外观。从现在开始,我将把它称为我的 EXCEL APP STYLE FILE。
我用来隐藏所有内容并定义宽度和高度的代码如下:
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 APP STYLE FILE 而我已经打开了另一个文件,当我关闭 EXCEL APP STYLE FILE 已打开的文件缺少滚动条、公式栏、状态栏和底部工作表选项卡。
- 示例,当我打开 EXCEL APP STYLE FILE 时另一个文件已经打开。
- EXCEL APP STYLE 文件,但我们可以在背面看到公式栏、工作表选项卡和状态栏在另一个文件中消失了。
- 当我关闭它时,公式栏、滚动条、状态栏和工作表选项卡都不见了。
我正在努力调整代码,但我似乎无法解决这个问题,因此当我的 EXCEL APP STYLE FILE 不会“弄乱”任何其他文件时,除了制作本身的变化。这可以实现吗?任何帮助将不胜感激。
提前致谢
我无法在单个工作簿中解决此问题,但这里有一个解决方法似乎可以防止其他工作簿受到影响。
它使用用户打开的“feeder”工作簿,然后feeder 工作簿可以打开Excel 的新实例并加载App Workbook。馈线然后关闭,让您的应用程序打开
Feeder Workbook 中唯一需要的代码是 WorkBook 打开事件......如下所示
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
我正在使用以下代码隐藏所有栏并打开工作簿以提供应用程序外观。从现在开始,我将把它称为我的 EXCEL APP STYLE FILE。
我用来隐藏所有内容并定义宽度和高度的代码如下:
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 APP STYLE FILE 而我已经打开了另一个文件,当我关闭 EXCEL APP STYLE FILE 已打开的文件缺少滚动条、公式栏、状态栏和底部工作表选项卡。
- 示例,当我打开 EXCEL APP STYLE FILE 时另一个文件已经打开。
- EXCEL APP STYLE 文件,但我们可以在背面看到公式栏、工作表选项卡和状态栏在另一个文件中消失了。
- 当我关闭它时,公式栏、滚动条、状态栏和工作表选项卡都不见了。
我正在努力调整代码,但我似乎无法解决这个问题,因此当我的 EXCEL APP STYLE FILE 不会“弄乱”任何其他文件时,除了制作本身的变化。这可以实现吗?任何帮助将不胜感激。
提前致谢
我无法在单个工作簿中解决此问题,但这里有一个解决方法似乎可以防止其他工作簿受到影响。
它使用用户打开的“feeder”工作簿,然后feeder 工作簿可以打开Excel 的新实例并加载App Workbook。馈线然后关闭,让您的应用程序打开
Feeder Workbook 中唯一需要的代码是 WorkBook 打开事件......如下所示
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