Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Icon in Titelleiste aus eingebettetem Objekt

Icon in Titelleiste aus eingebettetem Objekt
11.04.2006 19:21:31
ronny
Hallo Liebe Freunde der Einsen und Nullen,
bin sehr froh, dass es dieses Forum gibt, vielleicht kann sich meine Freude noch steigern.
Ich benutze folgenden Code, um das Icon in der Titelleiste durch ein eigenes zu ersetzen (klappt super), möchte aber auf eine zweite Datei verzichten und das Icon aus einem, ins Workbook eingebetteten Objekt beziehen.
Kann mir bitte jemand beim Umschreiben des Codes behilflich sein?
Gruss ronny
Option Explicit
'-----------------------------------------------------------------
'Win32 API

Function Declarations
Declare 

Function FindWindow _
Lib "user32" _
Alias "FindWindowA" _
( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) _
As Long
Declare 

Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long
Declare 

Function ExtractIcon _
Lib "shell32.dll" _
Alias "ExtractIconA" _
( _
ByVal hInst As Long, _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Long _
) _
As Long
Declare 

Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Integer, _
ByVal lparam As Long _
) _
As Long
'Win32 API Constant Declarations
Const WM_SETICON As Long = &H80
'Custom 

Function for changing Excel's windows icons
Public 

Function fncSetXLWindowIcon _
( _
Optional IconFile As String = vbNullString, _
Optional WorkbookName As String = vbNullString _
) _
As Boolean
'Variable Declarations
Dim XLMAINhWnd  As Long, XLDESKhWnd       As Long, _
EXCEL7hWnd  As Long, TargetWindowhWnd As Long, _
VirtualIcon As Long
'initialise the result of the 

Function to false; assume failure
fncSetXLWindowIcon = True
'STEP 1. Identify the target window
'get the caption from the first window of the specified workbook; if any
On Error Resume Next
If CBool(Len((Workbooks(WorkbookName).Name))) Then
WorkbookName = Workbooks(WorkbookName).Windows(1).Caption
End If
On Error GoTo ExitFunction
'if a caption has been extracted get a hendle to that workbook window;
'else get a handle to Excel's main window
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  we couldn't get a handle, exit the function
If TargetWindowhWnd = 0 Then Exit Function
'STEP 2. Extract the icon from the respective file
If IconFile = vbNullString Then
'assume that the user asked to restore the original icon
VirtualIcon = 0
Else
'try to extract the icon from the specified file
VirtualIcon = ExtractIcon(0, IconFile, 0)
'If the file could not be found (1), or if the no icon could be
'found in the file (0), exit the function
If VirtualIcon <= 1 Then Exit Function
End If
'STEP 3. Send a Windows message to the specified window to change
'        its icon
'in most cases only the second (False) message is adequate
SendMessage TargetWindowhWnd, WM_SETICON, True, VirtualIcon
SendMessage TargetWindowhWnd, WM_SETICON, False, VirtualIcon
'the functio has been completed succesfully
fncSetXLWindowIcon = True
ExitFunction:
End Function


Sub SetXLAppIcon()
'set XL's main window icon
fncSetXLWindowIcon "c:\Eigene Dateien\nichtexcel.ico"
End Sub


Sub ResetXLAppIcon()
'restore XL's main window icon
fncSetXLWindowIcon
End Sub


Sub SetXLWindowIcon()
'set active workbook's window icon
fncSetXLWindowIcon "c:\Eigene Dateien\nichtexcel.ico", ActiveWorkbook.Name
End Sub


Sub ResetXLWindowIcon()
'restore active workbook's window icon
fncSetXLWindowIcon , ActiveWorkbook.Name
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Icon in Titelleiste aus eingebettetem Objekt
11.04.2006 19:31:01
ChrisL
Hallo Ronny
Ein Schuss ins Blaue:

Private Sub Workbook_Activate()
Call SetXLAppIcon
Call SetXLWindowIcon
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ResetXLAppIcon
Call ResetXLWindowIcon
End Sub


Private Sub Workbook_Deactivate()
Call ResetXLAppIcon
Call ResetXLWindowIcon
End Sub


Private Sub Workbook_Open()
Call SetXLAppIcon
Call SetXLWindowIcon
End Sub

Links auf "DieseArbeitsmappe" klicken und den Code reinkopieren. Den alten Code im Standardmodul lassen.
Gruss
Chris
Anzeige
AW: Icon in Titelleiste aus eingebettetem Objekt
11.04.2006 19:55:04
ronny
hallo chrisl,
das ist ja toll von dir, dass du dich gleich an die arbeit machst, ABER
den code aufzurufen und oder ereignissen zuzuordnen ist nicht mein problem.
ich möchte, dass die icon-datei, welche ich ins workbook eingebettet habe herangezogen wird und keine "externe" datei.
ich stelle mal eine bspdatei rein.
https://www.herber.de/bbs/user/32781.xls
gruß ronny
AW: Icon in Titelleiste aus eingebettetem Objekt
11.04.2006 20:05:57
ChrisL
Hallo Ronny
Inzwischen verstehe ich die Frage, aber leider kenne ich die Lösung nicht. Es gibt ein Beispiel-Code im Archiv, wo es darum geht ein Diagramm (Objekt) als Grafik abzuspeichern. Aber wie macht man daraus eine *.ico Datei macht, keine Ahnung sorry.
Gruss
Chris
Anzeige
AW: Icon in Titelleiste aus eingebettetem Objekt
ronny
ChrisL,
ich habe doch die ICO-Datei bereits eingebettet.
Diese will ich aber nun in die Titelleiste bekommen.
quasi aus der exceldatei heraus (intern), nicht als externe 2.Datei einbeziehen.
Gruß ronny
AW: Icon in Titelleiste aus eingebettetem Objekt
11.04.2006 22:00:41
Herbert
Hi,
geht nicht!
mfg Herbert
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 13:18:46
ronny
Herbert,
vielen Dank. Das ist doch mal 'ne klare Aussage. Da weiss ich wenigstens, woran ich bin und brauche mir nicht weiter den Kopf zerbrechen.
Gruß Ronny
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 15:01:23
Herbert
Hi,
habe gelogen, geht doch, aber mit riesigem Aufwand, der einfach für solch eine
kosmetische Geschichte zu hoch ist.
mfg Herbert
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 15:33:02
ronny
Herbert,
na gut, dann lassen wir das.
kannst du mir aber sagen, wie ich die eingebettete Datei per vba wieder herausbekomme, als kopie nach Bsp. d:\test\ ?
Gruß ronny
Anzeige
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 16:03:59
ChrisL
Hallo Ronny
Damit stellst du m.E. die gleiche Frage erneut. Das "Herausbekommen" war schon immer Grundvoraussetzung, aber darin liegt auch nicht das Problem.
http://www.schmittis-page.de/index.html?/excel/vba/t27.htm
Das Dateiformat *.ico scheint mir das Problem zu sein. Wie erwähnt kenne ich die Lösung für dieses Problem nicht, aber vielleicht verstehst du was ich meine.
Gruss
Chris
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 16:13:57
ronny
Hallo chrisl,
nochmals danke für deine bemühungen.
das abbild allein reicht mir in dem und auch einem andern fall ja leider nicht. ich möchte mit der kompletten datei weiterarbeiten. wie das mit dem bild bzw diagramm funktioniert, habe ich in früheren recherchen auch schon herausgefunden und für andere zwecke auch verwenden können.
vielen dank.
gruß ronny
Anzeige
AW: Icon in Titelleiste aus eingebettetem Objekt
12.04.2006 16:20:40
ChrisL
Hallo Ronny
Meine auch nur, wenn Herbert sagt, dass es mit dem ICO nicht resp. nur mit riesigem Aufwand geht (ich kann es selber nicht beurteilen), dann ist doch deine Anschlussfrage einfach wieder die gleiche Frage wie Herbert schon beantwortet hat. Herausbekommen tust du, aber nicht eine ICO-Datei.
Ich lasse die Frage offen und klinke mich aus.
Gruss
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige