Benutzer mit den meisten Antworten
Wie kann ich bei einem VSTO Add-In einen Trigger setzen, sodass ein Befehl nur bei bestimmten Dokumenten ausgeführt wird?

Frage
-
Hallo,
ich brauche eine Benachrichtigung in Office die nur bei bestimmten Dokumenten greift.
Durch recherchen und herumprobieren habe ich zumindest schon den Code um eine MessageBox anzeigen zu lassen, wenn ein Dokument gespeichert wird.
Private Sub Application_DocumentBeforeSave(ByVal Doc As Word.Document, ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean) Handles Application.DocumentBeforeSave MessageBox.Show("Dies ist ein Test.", "TEST") End Sub
Jetzt stelle ich mir die Frage,wie kann ich den Befehl einschränken, sodass er nur bei Dateien von bestimmten Laufwerken oder besser noch bestimmten Ordnern/Dateien angezeigt wird?
Antworten
-
Das Objekt "Me" ist dein AddIn und da hast du sowas halt nicht.
In der Parameterübergabe gib es ein Objekt "Doc As Word.Document".
Per F2 kannst du die Objektstruktur des Types "Document" ansehen.
Die ".Path"-Eigenschaft ist der Pfad zum Dokument, die ".Name"-Eigenschaft ist der Name des Dokuments.Damit lässt sich doch was anfangen?
CustomDocumentProperties gibt es auch als Eigenschaft, aber hier sind die Eigenschaften, die man selber, eben "Custom", verwalten kann.
- Als Antwort markiert OS-Benji Montag, 30. Oktober 2017 09:36
-
Dein Beitrag hat mir geholfen die Lösung zu finden.
Leider konnte ich die Eigenschaft nicht auslesen, da Sie nicht wie ich dachte in Word hinterlegt wird. Deswegen bin ich jetzt den Weg gegangen den Filter an Dokumentenpfad zu legen.
Private Sub ThisAddin_DocumentOpen() Handles Application.DocumentOpen Dim myPath = Application.ActiveDocument.FullName End sub
Damit bekomme ich die Variabel myPath die den vollständigen Dokumentenpfad inklusive des Dateinamens des aktuellen Dokuments ausgibt wenn es geöffnet wird.
- Als Antwort markiert OS-Benji Montag, 30. Oktober 2017 09:39
Alle Antworten
-
Danke für die Info.
Leider hilft mir das (als absoluter Laie) nicht weiter. Ich habe aber jetzt etwas anderes gefunden was das ganze vermutlich einfacher macht.
Die Dokumente liegen auf einem Sharepoint und haben eine Property namens "Ausgabedatum". Könnte ich eine If-Abfrage erstellen die diesen Property ausliest (sofern dieser nicht leer ist) und diesen als vorschlag in eine InputBox packen die dem User angezeigt wird?
Ich habe im MSDN ein Beispiel gefunden wie man die Dokumenteigenschaften auslesen kann (https://msdn.microsoft.com/de-de/library/dhxe2d75.aspx?f=255&MSPPError=-2147217396) aber Visual Studio beschwert sich über den Codeabschnitt: Me.CustomDocumentProperties das dieser kein Member von ThisAddIn ist.
- Bearbeitet OS-Benji Freitag, 27. Oktober 2017 10:22
-
Das Objekt "Me" ist dein AddIn und da hast du sowas halt nicht.
In der Parameterübergabe gib es ein Objekt "Doc As Word.Document".
Per F2 kannst du die Objektstruktur des Types "Document" ansehen.
Die ".Path"-Eigenschaft ist der Pfad zum Dokument, die ".Name"-Eigenschaft ist der Name des Dokuments.Damit lässt sich doch was anfangen?
CustomDocumentProperties gibt es auch als Eigenschaft, aber hier sind die Eigenschaften, die man selber, eben "Custom", verwalten kann.
- Als Antwort markiert OS-Benji Montag, 30. Oktober 2017 09:36
-
Dein Beitrag hat mir geholfen die Lösung zu finden.
Leider konnte ich die Eigenschaft nicht auslesen, da Sie nicht wie ich dachte in Word hinterlegt wird. Deswegen bin ich jetzt den Weg gegangen den Filter an Dokumentenpfad zu legen.
Private Sub ThisAddin_DocumentOpen() Handles Application.DocumentOpen Dim myPath = Application.ActiveDocument.FullName End sub
Damit bekomme ich die Variabel myPath die den vollständigen Dokumentenpfad inklusive des Dateinamens des aktuellen Dokuments ausgibt wenn es geöffnet wird.
- Als Antwort markiert OS-Benji Montag, 30. Oktober 2017 09:39