Tag Archives: CustomDocumentProperties

Ich hab mich gefragt, was meine Eltern früher ohne Internet gemacht haben. Auch meine 14 Geschwister konnten mir keine Antwort geben.

Hallo Herr Martin,

Hier mal ein Problem an Sie als Excel-Guru.

Wir haben in unserem Dokumentenlenkungssystem eine Vorlage für Excel mit spezifischen Eigenschaften (siehe Bild mit den teilweise kundenspezifischen Eigenschaften).

Damit in Excel beim ausdrucken die wesentlichen Informationen in Kopf und Fußzeile erscheinen, müssen wir das alles sehr aufwändig händisch in allen Tabellenblättern pflegen. Was natürlich sehr fehlerträchtig ist…

Ich habe mit meinen sehr bescheidenen Kenntnissen mal versucht, irgendwie mit VBA da an die Info ranzukommen, so:

Sub Test()

rw = 1

Worksheets(1).Activate

For Each p In ActiveWorkbook.CustomDocumentProperties

    Cells(rw, 1).Value = p.Name

    Cells(rw, 2).Value = p.Value

    rw = rw + 1

Next

End Sub

Im Ergebnis allerdings ohne Erfolg, da kaum Werte so rauslesbar sind, vor allem nicht die spezifischen. Das wäre auch nur die halbe Miete gewesen, da ja das Einbringen der Info in die Kopf- und Fußzeile nochmal ein separates Problem darstellt, für die ich aktuell keine Idee zur Lösung habe… Kennen Sie vielleicht ein paar VBA-Kniffe, wie ich hier vielleicht weiterkomme?

Hallo Herr F.,

und so geht es:

mit

Dim i As Integer

    On Error Resume Next

    For i = 1 To ThisWorkbook.ContentTypeProperties.Count

        MsgBox ThisWorkbook.ContentTypeProperties(i).Name & „//“ & ThisWorkbook.ContentTypeProperties(i).Value

    Next

ermittle ich die von SharePoint gesetzten Werte und Namen.

Mit

    MsgBox ThisWorkbook.BuiltinDocumentProperties(„Title“).Value, , „Titel“

    MsgBox ThisWorkbook.ContentTypeProperties(„Location“).Value, , „Location“

    MsgBox ThisWorkbook.ContentTypeProperties(„Target group“).Value, , „Target group“

    MsgBox ThisWorkbook.ContentTypeProperties(„Document type“).Value, , „Document type“

greife ich auf die Inhalte zu.

Und: Dies kann in

Private Sub Workbook_BeforePrint(Cancel As Boolean)

eingebunden werden:

ActiveSheet.PageSetup.LeftHeader = …

Ich bin im Niveau ganz flexibel

Ich versuche per VBA benutzerdefinierte Eigenschaften an eine Datei zu binden. Nichts leichter als das, denke ich:

20170126Benutzereigenschaften01

Man definiert eine Variable vom Typ CustomDocumentProperties (oder Property) und fügt zu der Sammlung ein weiteres Element mit der Methode Add hinzu. Sie möchte Name und Value. Klingt vernünftig. Ich werde jedoch eines Besseren belehrt:

20170126Benutzereigenschaften02

Typen unverträglich? Okay – dann ohne Objektverweis:

20170126Benutzereigenschaften03

Falsch Anzahl an Argumenten? Aber IntelliSense hat mir doch … Ein Blick in die Hilfe verrät, dass ich die CustomDocumentProperties vom Typ DocumentProperties deklarieren muss. Aha:

20170126Benutzereigenschaften04

Und richtig: Dort wird noch zwingend der Parameter „LinkToContent“ verlangt.

Nächster Test:

20170126Benutzereigenschaften05

??? Etwas probieren und schon habe ich die Lösung: Obwohl die Eigenschaft „Type“ in eckigen Klammern, also optional, angegeben wurde, ist dieser Wert zwingend erforderlich.

Kaum probiert man eine halbe Stunde – schon klappt es auch. Flexibilität braucht man schon – nicht nur im Niveau:

20170126Benutzereigenschaften06