rolf
30.01.2007 15:01:46
ronny
ich habe unten stehenden code gefunden, um das icon in der titelleiste und in der taskleiste zu ändern.
nun funktioniert der code aber leider nur mit icons, die extern der betreffenden arbeitsmappe liegen.
meine frage: was bzw. wie muß der code verändert werden, daß ich ein icon verwenden kann, das in der selben arbeitsmappe in einem image-control eingefügt wurde.
habe mit meinen bescheidenen mitteln bereits einiges versucht. leider ohne erfolg.
vielen dank an alle grübler und
viele grüße
rolf
Option Explicit
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" ( _
ByVal hInst As Long, _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Integer, _
ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Private Const WM_SETICON As Long = &H80
Private Sub prcSetXLWindowIcon(Optional IconFile As String, _
Optional WorkbookName As String)
Dim XLMAINhWnd As Long, XLDESKhWnd As Long
Dim TargetWindowhWnd As Long, VirtualIcon As Long
If Not WorkbookName = vbNullString Then
XLMAINhWnd = FindWindow("XLMAIN", Application.Caption)
XLDESKhWnd = FindWindowEx(XLMAINhWnd, 0, "XLDESK", vbNullString)
TargetWindowhWnd = FindWindowEx(XLDESKhWnd, 0, "EXCEL7", WorkbookName)
Else
XLMAINhWnd = FindWindow("XLMAIN", Application.Caption)
TargetWindowhWnd = XLMAINhWnd
End If
If TargetWindowhWnd <> 0 Then
If IconFile = vbNullString Then
VirtualIcon = 0
Else
VirtualIcon = ExtractIcon(0, IconFile, 0)
If VirtualIcon <= 1 Then VirtualIcon = 0
End If
SendMessage TargetWindowhWnd, WM_SETICON, False, VirtualIcon
End If
End Sub
Public Sub prcReset()
Application.Caption = Empty
ActiveWindow.Caption = ActiveWorkbook.Name
prcSetXLWindowIcon
prcSetXLWindowIcon , ThisWorkbook.Name
End Sub
Public Sub prcSet()
Call prcSetXLWindowIcon _
("C:\Programme\Microsoft Office\Office\forms\1031\APPTL.ICO")
Call prcSetXLWindowIcon _
("C:\Programme\Microsoft Office\Office\forms\1031\APPTL.ICO" _
, ActiveWorkbook.Name)
Application.Caption = "Meine Anwendung"
ActiveWindow.Caption = "Mein Name"
End Sub