我正在使用以下代码,它可以很好地将Excel图标更改为我自己的图标。
就我自己打开工作簿而言,它完美无缺但是,只要另一个工作簿已经打开,代码似乎就不再有任何影响了。 它仅在Excel完全关闭时才有效,然后我用代码打开工作簿。 一旦我打开另一个工作簿,从一个工作簿更改为另一个工作簿,它就不再有效。
我正在使用Windows 7,Excel 2007。
我希望有人可以提供帮助。 感谢
Private Sub Workbook_Open()
changeXLIcon "D:/myBOOK/IQS.ico"
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
changeXLIcon "D:/myBOOK/IQS.ico"
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
changeXLIcon "Excel.exe"
End Sub
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
Public Sub changeXLIcon(iconname As String)
Dim Icon&
Icon = ExtractIcon32(0, iconname, 0)
SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 1 = big Icon
SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 0 = small Icon
End Sub
答案 0 :(得分:0)
我猜这些问题源于Excel在运行多个进程的同时只设置当前Window的图标。您应该尝试检索名为EXCEL.EXE的所有进程的列表,然后使用SendMessage32将其全部图标更改为各自的句柄,而不是仅调用GetActiveWindow32()。