Formular Icon setzen

Für 32Bit und 64Bit Office Versionen

Problemstellung:

Das Icon einer Access Anwendung zu ändern ist kein Problem.
Aber das Icon eines Access Formulars zu ändern ist etwas aufwändiger.
Wie kann ich das ändern?

Lösung:

Ausgangsposition: Access zeigt immer das Standard Icon für Formulare an.

Folgenden Code in ein öffentliches Modul kopieren:

#If VBA7 Then
    'Code für 32 bit und 64 bit Office VBA 7
     #If Win64 Then
        'Code für 64-bit Office VBA 7
        Declare PtrSafe Function LoadImage Lib "user32" _
            Alias "LoadImageA" _
            (ByVal hInst As LongPtr, _
            ByVal lpsz As String, _
            ByVal un1 As Long, _
            ByVal n1 As Long, _
            ByVal n2 As Long, _
            ByVal un2 As Long) _
            As LongPtr
        Declare PtrSafe Function SendMessage Lib "user32" _
            Alias "SendMessageA" _
            (ByVal hwnd As LongPtr, _
            ByVal wMsg As Long, _
            ByVal wParam As LongPtr, _
            lParam As Any) _
            As LongPtr
     #Else
        'Code für 32-bit Office VBA 7
        Public Declare Function LoadImage Lib "user32" _
            Alias "LoadImageA" _
            (ByVal hInst As Long, _
            ByVal lpsz As String, _
            ByVal un1 As Long, _
            ByVal n1 As Long, _
            ByVal n2 As Long, _
            ByVal un2 As Long) _
            As Long
        Public Declare Function SendMessage Lib "user32" _
            Alias "SendMessageA" _
            (ByVal hwnd As Long, _
            ByVal wMsg As Long, _
            ByVal wParam As Long, _
            lParam As Any) _
            As Long
     #End If
#Else
    'Code für VBA 6 (32 bit)
    Public Declare Function LoadImage Lib "user32" _
        Alias "LoadImageA" _
        (ByVal hInst As Long, _
        ByVal lpsz As String, _
        ByVal un1 As Long, _
        ByVal n1 As Long, _
        ByVal n2 As Long, _
        ByVal un2 As Long) _
        As Long
    Public Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" _
        (ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) _
        As Long
#End If

Public Const IMAGE_ICON = 1
Public Const LR_LOADFROMFILE = &H10
Public Const WM_SETICON = &H80
Public Const ICON_SMALL = 0


Der Aufruf sollte idealerweise im Load-Ereignis des Forms erfolgen da das Icon nicht gespeichert wird.
z.B.:

Private Sub Form_Load()
    SetFormIcon Me.hwnd, CurrentProject.Path & "\Test.ico"
End Sub

Statt CurrentProject.Path & "\Test.ico" kann natürlich auch der absolute Pfad der Datei angegeben werden.

Ergebnis:


 
 

Wir verwenden Cookies

Wir verwenden Cookies, um Ihr Surferlebnis zu verbessern und den Website-Verkehr zu analysieren. Bitte wählen Sie aus, welchen Cookie-Kategorien Sie zustimmen möchten.