我正在使用.vbs脚本打开.xlsm文件,以避免出现Excel启动画面(这是弹出的小方块,显示Excel正在加载)。 .vbs脚本还隐藏了工具栏功能区,并将Excel 2016置于全屏状态,但是引入了令人讨厌的标题栏,该标题栏在文件名之后包含一个迷你Excel图标和一个“-Excel”后缀。找到了适用于我的32位Excel的代码。我需要在我的工作笔记本电脑上使用它,但是它具有64位Excel。我在声明中添加了PtrSafe,但是更改图标的代码似乎没有任何作用。
以下代码是更改图标的原始代码。由于我尝试在公司笔记本电脑上的64位Excel上使用该代码,因此必须在Module 1代码中的声明和函数之间添加PtrSafe。 编辑:因此,在进一步研究中,我发现使用长数据类型调用Windows API时,需要长时间更新。因此,应将它们从Long更改为LongPtr或LongLong。我都尝试过,现在它告诉我Sub ChangeApplicationIcon()中的ExtractIcon32类型不匹配。我已经更改了Long(8)的每个实例。 EDIT2 :BigBen指出Icon&的意思是Icon As Long。因此,我实现了将Icon&更改为“ Icon As LongPtr”的修改。该代码运行没有错误,但仍然不会更改图标。 EDIT3:我已经在我的个人游戏台式机上尝试了64位版本excel的修复,但是图标仍然没有改变。因此,可能不是因为我公司的笔记本电脑受到任何可能的限制。
'******CODE FOR THISWORKBOOK MODULE****
Option Explicit
Private Sub Workbook_Open()
Application.Caption = " - Company Name "
ChangeApplicationIcon
End Sub
'*****************************************
'************CODE FOR MODULE1*************
Option Explicit
Declare Function GetActiveWindow32 Lib "user32" Alias _
"GetActiveWindow" () As Integer
Declare Function SendMessage32 Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function ExtractIcon32 Lib "SHELL32.DLL" Alias _
"ExtractIconA" (ByVal hInst As Long, _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long) As Long
'modification of code from Excel Experts E-Letter Archives.
'Original code By Jim Rech can be found by following this
'link > [removed link to avoid rule-breaking]
Sub ChangeApplicationIcon()
Dim Icon&
'*****Change Icon To Suit*******
Const NewIcon$ = "Notepad.exe"
'*****************************
Icon = ExtractIcon32(0, NewIcon, 0)
SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 1 = big Icon
SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 0 = small Icon
End Sub
'*****************************************
执行此代码后,应将全屏Excel的标题栏图标从Excel 2016图标更改为“记事本”图标。