Я использую скрипт .vbs, чтобы открыть файл .xlsm, чтобы избежать всплывающего экрана Excel (это маленький всплывающий квадрат, показывающий, что Excel загружается).Сценарий .vbs также скрывает ленту панели инструментов и выводит Excel 2016 в полноэкранный режим, но вводит раздражающую строку заголовка, которая содержит мини-значок Excel и суффикс «- Excel» после имени файла.Нашел код для этого, который работал на моем 32-разрядном Excel.Мне нужно использовать это на моем рабочем ноутбуке, но он имеет 64-разрядную версию Excel.Я добавил PtrSafe в свое объявление, но часть кода, изменяющая значок, похоже, ничего не делает.
Приведенный ниже код является исходным кодом для изменения значка.Поскольку я пытался использовать код в 64-разрядной версии Excel на ноутбуке своей компании, мне пришлось добавить PtrSafe между Declare и Function в коде модуля 1. РЕДАКТИРОВАТЬ: Итак, после дальнейших исследований я обнаружил, что при вызове Windows API с использованием длинных типов данных, длинные должны быть обновлены.Поэтому они должны быть изменены с Long на LongPtr или LongLong.Я попробовал оба, и теперь он говорит мне, что есть несоответствие типов на ExtractIcon32 в Sub ChangeApplicationIcon ().Я изменил каждый экземпляр 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 на значок блокнота.