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 = …

2 Kommentare

  • Rainer Köppl-Schäfer

    Hallo Herr Martin,

    das funktioniert prima – erst mal vielen Dank dafür. Mit einer Ausnahme: Sind in den Namen Umlaute enthalten (So bei uns in der Sharepoint Bibliothek, z.B. „Kerngeschäft“ oder „“Regelmäßig“), kommt es immer zu einem Laufzeitfehler 438 – Objekt unterstützt die Eigenschaft oder Methode nicht.

    Er erkennt die Anzahl (in diesem Fall 14), also kann er sie lesen. Aber er stolpert sofort, wenn ein Umlaut enthalten ist. Obwohl Sharepoint das ja erlaubt und die Properties auch innerhalb der Excel korrekt angezeigt werden.

    Hier der Code:
    ————-
    Sub ListItems()
    Dim i As Integer

    MsgBox (ThisWorkbook.ContentTypeProperties.Count) <<<< Zeigt 14 an

    For i = 1 To ThisWorkbook.ContentTypeProperties.Count
    MsgBox ThisWorkbook.ContentTypeProperties(i).Name & "//" & _
    ThisWorkbook.ContentTypeProperties(i).Value
    Next i

    Bei Einzel-Aufruf funktionieren alle ohne Umlaut, die mit Umlaut erzeigen den Fehler.
    Ich komme einfach nicht dahinter, warum das im Dokument sauber gespeichert ist, im Dokumentbereich in Excel auch angezeigt werden kann aber nicht über VBA.

    Gibt es da einen Trick?
    Danke im Voraus!

Schreibe einen Kommentar zu Rainer Köppl-Schäfer Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.