News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

Beitrag aus SmartTools Access Weekly

Eigenschaften von Office-Dokumenten aus Access heraus anzeigen und bearbeiten

Access 365 2024 2021 2019 2016 2013 2010

Access-Datenbanken werden häufig für die Verwaltung von Office-Dokumenten eingesetzt. Nun möchten Sie beispielsweise für ein Word-Dokument oder eine Excel-Arbeitsmappe einen Eigenschaften-Dialog anzeigen lassen, über den Sie Einträge wie "Titel", "Autor", "Stichwort", "Betreff" usw. prüfen und ggf. ergänzen können, ohne dass dazu das Dokument in Word oder Excel geöffnet werden muss. Wir liefern in diesem Tipp eine passende Lösung.

Wenn Sie im Windows-Explorer mit der rechten Maustaste auf ein Word-Dokument, eine Excel-Arbeitsmappe oder ein anderes Office-Dokument klicken und Eigenschaften anwählen, wird ein Dialog angezeigt, der eine Registerkarte "Dateiinfo" präsentiert, die obige Informationen anzeigt und auch deren Änderung erlaubt. Diesen Eigenschaften-Dialog können Sie per VBA mit Hilfe der API-Funktion "ShellExecuteEx()" wie folgt anzeigen lassen:

Private Const SEE_MASK_INVOKEIDLIST As Long = &HC&
Private Const SW_SHOW               As Long = 5&

Private Type SHELLEXECUTEINFO
  cbSize As Long
  fMask As Long
  hwnd As Long
  lpVerb As String
  lpFile As String
  lpParameters As String
  lpDirectory As String
  nShow As Long
  hInstApp As Long
  lpIDList As Long
  lpClass As String
  hkeyClass As Long
  dwHotKey As Long
  hIcon As Long
  hProcess As Long
End Type

Private Declare Function ShellExecuteEx _
        Lib "shell32.dll" _
        (ByRef SEI As SHELLEXECUTEINFO) As Long


Public Function ShowFilePropertiesDialog( _
                ByVal FileOrDirectory As String, _
                Optional ByVal hWndParent As Long = 0) _
                As Boolean
  Dim SEI As SHELLEXECUTEINFO

  With SEI
    .cbSize = Len(SEI)
    .hwnd = hWndParent
    .nShow = SW_SHOW
    .fMask = SEE_MASK_INVOKEIDLIST
    .lpVerb = "Properties"
    .lpFile = FileOrDirectory
  End With
  ShellExecuteEx SEI
  ShowFilePropertiesDialog = (SEI.hInstApp > 32)

End Function

Die korrekte Einbindung können Sie prüfen, indem Sie im Direktbereich der VBA-Entwicklungsumgebung folgende Anweisung eingeben (bitte Pfad und Dateinamen entsprechend anpassen):

? ShowFilePropertiesDialog "Z:\Test\budget.xlsx"

Legen Sie im betreffenden Formular eine Schaltfläche Eigenschaften (Name= btnProperties) an und geben Sie für die Ereignisprozedur "Beim Klicken" folgende Anweisung ein:

Sub btnProperties_Click()

  ShowFilePropertiesDialog Me.DocPath, Me.hWnd

End Sub

"DocPath" ersetzen Sie dabei durch den Namen des Feldes, das in Ihrem Formular Pfad und Dateiname des Dokumentes speichert. Wenn Sie ein OLE-Feld verwenden, geben Sie dessen "SourceDoc"-Eigenschaft als Parameter an:

ShowFilePropertiesDialog Me.DocOLE.SourceDoc, Me.hWnd

Der zweite Parameter "Me.hWnd" ist optional - ist er angegeben, wird das Eigenschaftenfenster an das Formular gebunden, andernfalls erscheint es willkürlich irgendwo auf dem Bildschirm.

Basis der Lösung ist die API-Funktion "ShellExecuteEx()", die verschiedene Funktionen der Windows-Benutzeroberfläche verfügbar macht. Dieser Funktion wird eine Datenstruktur "SHELLEXECUTEINFO" mit Informationen dazu übergeben, welche Funktion womit ausgeführt werden soll. In dieser Datenstruktur ist über das Feld "lpFile" Pfad/Dateiname einer Datei und über das Feld "lpVerb" der Bezeichner "Properties" anzugeben. "ShellExecuteEx()" wertet diese Informationen aus und zeigt dementsprechend den Eigenschaftendialog der angegebenen Datei (oder eines Verzeichnisses) an.