Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用vba更改excel图标(在任务栏中)_Excel_Vba_Icons_Taskbar - Fatal编程技术网

无法使用vba更改excel图标(在任务栏中)

无法使用vba更改excel图标(在任务栏中),excel,vba,icons,taskbar,Excel,Vba,Icons,Taskbar,嗨 我正在使用以下代码(很抱歉,我不知道是从哪里获得的)将WINDOWS任务栏中的excel图标从常用的excel图标更改为我制作的图标 但它不起作用…只会更改应用程序左上角的小图标(而不是任务栏) 但是,当我直接在VBA窗口中运行代码时,它会将VBA窗口的任务栏图标更改为我的图标 我假设它将activewindow视为当前正在打开的窗口(直接运行时为VBA窗口),但在打开书本时,它的操作方式不同 我正在使用Windows7 我希望有人能帮忙 Declare Function GetActive

嗨 我正在使用以下代码(很抱歉,我不知道是从哪里获得的)将WINDOWS任务栏中的excel图标从常用的excel图标更改为我制作的图标

但它不起作用…只会更改应用程序左上角的小图标(而不是任务栏)

但是,当我直接在VBA窗口中运行代码时,它会将VBA窗口的任务栏图标更改为我的图标

我假设它将activewindow视为当前正在打开的窗口(直接运行时为VBA窗口),但在打开书本时,它的操作方式不同

我正在使用Windows7

我希望有人能帮忙

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
Sub ChangeApplicationIcon()


     '*****Change Icon To Suit*******
    NewIcon = ThisWorkbook.Path & "\MYICON.ICO"
     '*****************************

    Icon = ExtractIcon32(0, NewIcon, 0)
    SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 1 = big Icon
    SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 0 = small Icon

    ActiveWindow.Caption = "MY APPLICATION" 


End Sub
将函数GetActiveWindow32 Lib“user32”别名“GetActiveWindow”()声明为整数
将函数SendMessage32 Lib“user32”别名“SendMessageA”(ByVal hWnd为Long,ByVal wMsg为Long,ByVal wParam为Long,ByVal lParam为Long)声明为Long
将函数ExtractIcon32 Lib“shell32.dll”别名“ExtractIconA”(ByVal hInst为长,ByVal lpszExeFileName为字符串,ByVal nIconIndex为长)声明为长
子变更应用程序()
'******更改图标以适应*******
NewIcon=ThisWorkbook.Path&“\MYICON.ICO”
'*****************************
图标=提取图标32(0,新图标,0)
SendMessage32 GetActiveWindow32(),&H80,0,图标“<1=大图标
SendMessage32 GetActiveWindow32(),&H80,1,图标“<0=小图标
ActiveWindow.Caption=“我的应用程序”
端接头

任务栏图标是一个32像素的图标。您正在将大小图标都设置为16像素图标。使用32像素的图标作为大图标。

声明PtrSafe函数GetActiveWindow32 Lib“user32”别名“GetActiveWindow”()的长度为
Declare PtrSafe Function GetActiveWindow32 Lib "user32" Alias "GetActiveWindow" () As Long
Declare PtrSafe 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 PtrSafe Function ExtractIcon32 Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long

Sub ChangeApplicationIcon()


     '*****Change Icon To Suit*******
    NewIcon = ThisWorkbook.Path & "\2M.ICO"
     '*****************************

    Icon = ExtractIcon32(0, NewIcon, 0)
    SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 1 = big Icon
    SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 0 = small Icon

    ActiveWindow.Caption = "MY APPLICATION"


End Sub
将PtrSafe函数sendmages32 Lib“user32”别名“sendmagesa”(ByVal hWnd为Long,ByVal wMsg为Long,ByVal wParam为Long,ByVal lParam为Long)声明为Long 声明PtrSafe函数ExtractIcon32 Lib“shell32.dll”别名“ExtractIconA”(ByVal hInst为Long,ByVal lpszExeFileName为String,ByVal nIconIndex为Long)为Long 子变更应用程序() '******更改图标以适应******* NewIcon=ThisWorkbook.Path&“\2M.ICO” '***************************** 图标=提取图标32(0,新图标,0) SendMessage32 GetActiveWindow32(),&H80,0,图标“<1=大图标 SendMessage32 GetActiveWindow32(),&H80,1,图标“<0=小图标 ActiveWindow.Caption=“我的应用程序” 端接头
欢迎来到堆栈溢出。对于堆栈溢出,不鼓励使用仅代码的答案,因为它们没有解释堆栈溢出是如何解决问题的。请编辑您的答案,解释此代码的作用以及它如何回答问题,以便对其他有类似问题的用户有用。