Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
804to808
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
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage zu einem Makro fürs Ändern des Excelicons?

Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 19:48:53
Kasimir
Hallo Leute,
ich steh mal wieder vor einem Problem und weiß die Lösung nicht. Ich habe im Netz nachfolgendes Makro gefunden, mit dem man das Excelicon in der Titelleiste und das Icon in der Schaltfläche aus der Taskleiste ändern kann. Das funktioniert auch. Nachfolgend erst mal das Makro


'Get the handle for a window
Declare Function wapiFindWindow Lib "user32" Alias "FindWindowA" _
 (ByVal lpClassName As StringByVal lpWindowName As StringAs Long
'Extract an icon from a file
Declare Function wapiExtractIcon Lib "shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As LongByVal lpszExeFileName As String, _
ByVal nIconIndex As LongAs Long
'Send a Windows message
Declare Function wapiSendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As LongByVal wMsg As LongByVal wParam As Integer, _
ByVal lparam As LongAs Long
'Windows message types
Public Const WM_SETICON = &H80
Sub changeicon()
Dim sName As String
sName = "C:\Abbildungen\OMI.ico"
Call procSetIcon(sName)
End Sub
Sub procSetIcon(sIconPath)
Dim As Long, ihWnd As Long, ihIcon As Long
'Get the handle of the Excel window
ihWnd = wapiFindWindow("XLMAIN", Application.Caption)
'Get the icon from the source
ihIcon = wapiExtractIcon(0, sIconPath, 0)
If ihIcon > 1 Then
'Set the big (32x32) and small (16x16) icons
a = wapiSendMessage(ihWnd, WM_SETICON, True, ihIcon)
a = wapiSendMessage(ihWnd, WM_SETICON, False, ihIcon)
End If
End Sub


Wenn das Makro ausgeführt wurde, ändern sich die Icons. Nur wenn ich über das folgende Makro eine bestimmte Datei im Hintergrund öffne, ändert sich das Icon in der Taskleistenschaltläche wieder in das Excel-Icon. Man kann es dann auch nicht mehr über das obige Makro ändern. Nachfolgend erst mal das Makro, mit dem ich die Datei öffne.


Option Explicit
Sub Objekt_auswählen()
Dim Sheet_Name As String, Verzeichnis As String, Dateiname As String
Dim Baujahr As Integer
Application.ScreenUpdating = False
    
Sheet_Name = ActiveWindow.Caption
    
Verzeichnis = "C:\Daten\Preislisten\"
    
Workbooks.Open Filename:=Verzeichnis & "Objekt.xls", Password:="1234567890"
Dateiname = ActiveWorkbook.Name
    
With Windows(Dateiname)
.Visible = False
End With
    
With Windows(Sheet_Name)
.Activate
End With
    
On Error Resume Next
Baujahr = Workbooks(Dateiname).Sheets("Vorlage").Range("R2")
End Sub


Hat jemand von Euch eine Idee, warum das so ist? Woran das liegt weiß ich ja, es liegt am Öffnen der zweiten Datei. Was ich nur nicht weiß. warum das Icon sich wieder zurück ändert und warum ich es dann nicht wieder über das Makro für das Ändern des Icons zurück ändern kann.
Kann sich mal jemand die Makros anschauen und hat dann eventuell einen Lösungsansatz für mich. Denn wie einleitend geschrieben, stehe ich auf dem Schlauch.
Danke und Gruß,
Kasimir

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 19:59:52
Jens
Hi,
Verständnisfrage, wozu ist sowas nötig?
mfg Jens
AW: Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 20:05:24
Kasimir
Hallo Jens,
ich erstelle mir eine Datei und möchte mein eigenes Icon angezeigt bekommen. Mag Spielerei sein, aber ich möchte in VBA auch noch lernen, daher möchte ich das mal einbauen und zwar so, dass es funktioniert. Ich hätte mir zwar auch sagen können, funktioniert nicht, lasse ich das weg. Aber dann wüsste ich nicht, warum es nicht funktioniert und das befriedigt mich nicht wirklich.
Gruß,
Kasimir
AW: Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 20:35:23
K.Rola
Hallo,
das kannst du mit einem Klassenmodul, z.B. in deiner PERSONL.XLS oder in einem
Addin, erledigen. Die Prozedur ist:

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
Call changeicon
End Sub

Beim Activate-Ereignis eines Workbooks wird das Icon geändert.
Dein Code ändert allerdings nur das Icon der Application, nicht das der Mappe.
Gruß K.Rola
Anzeige
AW: Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 20:57:49
Kasimir
Hallo K.Rola,
danke Dir für Deine Antwort. Allerdings möchte ich das mit dem Icon nur bei einer Datei machen und nicht bei allen. Wenn ich das in eine PERSONL.XLS einbinde, wird doch bei jedem öffnen einer Datei das geänderte Icon angezeigt oder? Wie kann ich das in nur einer Datei realisieren.
Was ich auch nicht ganz verstanden habe, was mit dem Klassenmodul gemeint ist. Was muss ich denn in das Klassenmodul eintragen.
Kannst Du mir dazu noch ein paar Hinweise geben. Ich bin noch nicht so ganz fitt in VBA, deshalb meine dummen Fragen.
Danke und Gruß,
Kasimir
AW: Frage zu einem Makro fürs Ändern des Excelicons?
22.09.2006 22:44:50
K.Rola
Hallo,
https://www.herber.de/bbs/user/36940.xls
Schau mal, ob es passt.
Gruß K.Rola
Anzeige
AW: Frage zu einem Makro fürs Ändern des Excelicons?
23.09.2006 06:32:26
Kasimir
Moin K.Rola,
das sieht super aus. Beim ersten Testversuch funktionierte das genauso wie ich es mir dachte. Ich werde das mal weiter testen und dann in meine Datei übernehmen. Hab besten Dank für Deine Hilfe, die war Gold wert. Sollte ich mich nicht mehr melden, haben Deine Code auch nach mehrmaligen Testen funktioniert (wovon ich mal ausgehe). ;o)
Noch mal Danke und ein schönes WE,
Kasimir

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige