1 1 1 1 1 1 1 1 1 1 Rating 5.00 (2 Votes)

Problemstellung:

Für 32Bit und 64Bit Office Versionen

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:


 

Ähnliche Artikel