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.