Icon in Symbolleisten aus Bilddatei

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Icon in Symbolleisten aus Bilddatei
von: marcus
Geschrieben am: 04.07.2002 - 15:18:18

Hallo,

ich möchte einem Macro in einer Symboleiste ein anderes Icon geben als die in Excel vorhandenen.

Gibt es ausser der Änderung des Icons über das langweilige Grafik-Bearbeitungsprogramm die Möglichkeit neue Icons oder Bilder so zu hinterlegen, dass man über den Menüpunkt 'Schaltflächensymbol ändern/bearbeiten'auf Sie zugreifen kann.

Oder habt Ihr noch andere Ideen?

Vielen Dank im voraus.

Gruß.

Marcus


nach oben   nach unten

Re: Icon in Symbolleisten aus Bilddatei
von: Michael Scheffler
Geschrieben am: 04.07.2002 - 16:20:36

Hallo,

Du kannst Dir ein eigenes Icon mit einem Programm machen, es als Icon-Datei abspeichern und dann via API und Paste-Befehl in Deinen Button kopieren. Meinst Du so etwas?

Gruß

Micha


nach oben   nach unten

Re: Icon in Symbolleisten aus Bilddatei
von: marcus
Geschrieben am: 04.07.2002 - 16:37:08

Hallo Michael,

geht das denn auch für eine Befehlsschaltfläche? Und wenn ja, hast Du Zeit mir eine etwas detailierte Beschreibung zu liefern - das wäre super.

Vielen Dank im voraus.

Gruß.

Marcus


nach oben   nach unten

Re: Icon in Symbolleisten aus Bilddatei
von: Michael Scheffler
Geschrieben am: 04.07.2002 - 17:30:46

Hallo,

alles irgendwo aus dem Netz und greift auf API-Funktionen zurück:

Das ist zum Ändern des Excel-Icon:
' Icon
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

Sub ChangeXLIcon()
Dim h32NewIcon As Long
Dim h32WndXLMAIN As Long
h32NewIcon = ExtractIcon32(0, "rep.ico", 0)
h32WndXLMAIN = GetActiveWindow32()
SendMessage32 h32WndXLMAIN, &H80, 1, h32NewIcon 'Icon big
SendMessage32 h32WndXLMAIN, &H80, 0, h32NewIcon 'Icon small
End Sub

und das ist zum Laden einer Bitmap und Kopieren in einen CommandButton:

Declare Function LoadImage Lib "USER32" Alias "LoadImageA" (ByVal _
hInst As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long
Declare Function CloseClipboard Lib "USER32" () As Long
Declare Function OpenClipboard Lib "USER32" (ByVal hWnd As Long) As Long
Declare Function EmptyClipboard Lib "USER32" () As Long
Declare Function SetClipboardData Lib "USER32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Declare Function IsClipboardFormatAvailable Lib "USER32" (ByVal wFormat As Long) As Long

Sub SetMenuIcon(strMenuname As String)
Dim hBitmap As Long
Dim ct As CommandBarButton
hBitmap = LoadImage(0&, ActiveWorkbook.Path & "\rep.bmp", IMAGE_BITMAP, 16, 16, LR_LOADFROMFILE)
If hBitmap = 0 Then
MsgBox "There was an error while loading icon bitmap rep.bmp"
Exit Sub
End If
'open the clipboard
OpenClipboard 0&
'Clear the clipboard
EmptyClipboard
'Put our bitmap onto the clipboard
SetClipboardData CF_BITMAP, hBitmap
'Check if there's a bitmap on the clipboard
If IsClipboardFormatAvailable(CF_BITMAP) = 0 Then
MsgBox "There was an error while pasting the icon bitmap to the clipboard!"
End If
'Close the clipboard
CloseClipboard
Set ct = CommandBars("Repair2000").Controls(1)
ct.PasteFace
ct.style = msoButtonIcon
Set ct = Nothing
End Sub

Gruß

Micha


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Icon in Symbolleisten aus Bilddatei"