Golfer65 said:
'hwndIcon = ExtractIconA(0, ThisWorkbook.Path & “$SIGN.ico”, 0)
Put this code in a separate module
'---------------------------------------------
Option Explicit
Declare Function FindWindow Lib “user32” Alias “FindWindowA” (ByVal ClassName As String, ByVal WindowName As String) As Long
Declare Function ExtractIcon Lib “shell32.dll” Alias “ExtractIconA” (ByVal Instance As Long, ByVal ExeFileName As String, ByVal IconIndex As Long) As Long
Declare Function SendMessage Lib “user32” Alias “SendMessageA” (ByVal hWnd As Long, ByVal Message As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Const WM_SETICON = &H80
Public Function PathToFile(filename As String)
Dim XLSPadlock As Object
On Error GoTo Err
Set XLSPadlock = Application.COMAddIns(“GXLSForm.GXLSFormula”).Object
PathToFile = XLSPadlock.PLEvalVar(“EXEPath”) & filename
Exit Function
Err:
PathToFile = “”
End Function
Public Sub SetExcelIcon(ByVal IconPath As String)
Dim A As Long
Dim hWnd As Long
Dim hIcon As Long
hWnd = FindWindow(“XLMAIN”, Application.Caption)
hIcon = ExtractIcon(0, IconPath, 0)
If hIcon > 1 Then
Call SendMessage(hWnd, WM_SETICON, True, hIcon)
Call SendMessage(hWnd, WM_SETICON, False, hIcon)
End If
End Sub
Public Sub ChangeExcelIcon()
'The call below works fine when you explictly define the path to the file
'Call SetExcelIcon(“C:\Users\Christos\Desktop\MyApp\Icon.ico”)
'If you want to use excel’s “ThisWorkbook.path” you would need to
'call XLS function as described below.
'this line would have to be changed to call XLS Function PathToFIle
'hwndIcon = ExtractIconA(0, ThisWorkbook.Path & “$SIGN.ico”, 0)
Dim file_name As String
file_name = “$SIGN.ico”
Call SetExcelIcon(PathToFile(file_name))
End Sub