Dokumenteigenschaften entfernen
Mit in-STEP BLUE können Sie Dokumenteigenschaften beispielsweise in ein Word-Dokument generieren. Was machen Sie aber, wenn Sie ein Dokument extern verschicken möchten und der Empfänger nicht über die Informationen Ihres in-STEP BLUE-Systems Bescheid wissen soll. Vielleicht möchten Sie auch aus Ihrem Word-Dokument ein PDF erstellen, ohne dass interne Informationen aus den Dokumenteigenschaften in das PDF übernommen werden. Natürlich können Sie Dokumenteigenschaften bei Bedarf auch wieder aus dem Word-Dokument entfernen. Und dies über ein kleines Makro sogar automatisiert.
Der Weg zum Entfernen der Dokumenteigenschaften
In MS Word können Sie über den Dateieigenschaften-Dialog die einzelnen Dokumenteigenschaften manuell löschen. Da aber mindestens 30 bis 40 Dokumenteigenschaften von in-STEP BLUE angelegt werden und Word nach jedem Löschvorgang nicht die nächste Eigenschaft markiert, ist dies nicht unbedingt eine praktikable Lösung.
Stattdessen könnten Sie das Löschen der Dokumenteigenschaften über ein Makro automatisieren. Öffnen Sie dazu als erstes in MS Word den Visual-Basic-Editor (Alt+F11).
Auf der linken Seite werden Ihnen unter Projekt (ggf. einzublenden mit Ansicht/Projekt-Explorer) die aktuell geöffneten Dokumente angezeigt. In meinem Fall das Mein Dokument.doc mit den Dokumenteigenschaften, die is_CoreProcess.dot, auf der Mein Dokument.doc basiert, die Normal.dot, auf der wiederum die is_CoreProcess.dot basiert, und unser in-STEP BLUE-Add-In für MS Word, die inStep20_Toolbar.dot.
Führen Sie nun einen Doppelklick auf ThisDocument aus, wodurch auf der rechten Seite der Quellcode-Editor aktiviert wird.
Kopieren Sie den von mir vorbereiteten Quellcode in den Editor:
Public Sub RemoveDocumentProperties()
Dim oDocument As Word.Document
‘ Liefert das Dokument zurück, dass aktuell in MS Word den Fokus besitzt.
Set oDocument = ActiveDocument
Dim nAnswer As VbMsgBoxResult
‘ Sicherheitsabfrage
nAnswer = MsgBox(“Möchten Sie die Dokumenteigenschaften aus dem Dokument ‘ ” & _
oDocument.Name & “‘ entfernen?”, vbQuestion + vbYesNo, “Dokumenteigenschaften entfernen”)
If nAnswer = vbYes Then
Dim oField As Word.Field
Dim l As Long
‘ Wenn man eine Dokumenteigenschaft entfernt, die noch in Feldern verwendet wird,
‘ führt dies beim Aktualisieren der Felder (z.B. beim Drucken des Dokuments) zu
‘ Fehlern.
For l = oDocument.Fields.Count To 1 Step -1
Set oField = oDocument.Fields.Item(l)
If oField.Type = wdFieldDocProperty Then
Dim sCode As String
sCode = oField.Code.Text
sCode = LTrim(Replace(sCode, “DOCPROPERTY”, “”))
‘ Es sollen nur die Dokumenteigenschaften verarbeitet werden, die von in-Step generiert wurden.
‘ -> Das soll sicherstellen, dass Sie nicht unbeabsichtigt eigene Dokumenteigenschaften entfernen.
‘ Möchten Sie alle Dokumenteigenschaften löschen, dann lassen Sie diese If-Abfrage (inklusive des
‘ nächsten End If) weg.
If UCase$(Left(sCode, 3)) = “IS_” Or _
UCase$(Left(sCode, 4)) = “ISP_” Or _
UCase$(Left(sCode, 10)) = “ISPROJECT.” Or _
UCase$(Left(sCode, 9)) = “ISAUTHOR.” Or _
UCase$(sCode) = “PRODUKTTYP” Then
‘ Wandelt das Feld in normalen Text um.
oField.Unlink
End If
End If
Next
Dim lDelProperties As Long
lDelProperties = 0
‘ Durchläuft alle Dokumenteigenschaften, die in diesem Dokument definiert sind.
For l = oDocument.CustomDocumentProperties.Count To 1 Step -1
Dim oProperty As Object
Set oProperty = oDocument.CustomDocumentProperties.Item(l)
‘ Wie oben, werden nur Dokumenteigenschaften von in-Step entfernt.
If UCase$(Left(oProperty.Name, 3)) = “IS_” Or _
UCase$(Left(oProperty.Name, 4)) = “ISP_” Or _
UCase$(Left(oProperty.Name, 10)) = “ISPROJECT.” Or _
UCase$(Left(oProperty.Name, 9)) = “ISAUTHOR.” Or _
UCase$(oProperty.Name) = “PRODUKTTYP” Then
‘ Dokumenteigenschaft wird gelöscht
oProperty.Delete
lDelProperties = lDelProperties + 1
End If
Next
‘ Gibt am Ende aus, ob und wie viele Dokumenteigenschaften entfernt wurden.
If lDelProperties = 0 Then
MsgBox “Es mussten keine Dokumenteigenschaften entfernt werden.”, vbOKOnly + vbInformation
ElseIf lDelProperties = 1 Then
MsgBox “Es wurde eine Dokumenteigenschaften entfernt.”, vbOKOnly + vbInformation
ElseIf lDelProperties > 1 Then
MsgBox “Es wurden ” & CStr(lDelProperties) & ” Dokumenteigenschaften entfernt.”, vbOKOnly + vbInformation
End If
End If
End Sub
Was macht dieses Makro?
Zuerst wird geprüft, welche Felder auf Dokumenteigenschaften verweisen. Diese werden dann in normalen Text umgewandelt. Der Grund dafür ist, dass es beim Aktualisieren der Felder (z.B. beim Drucken des Dokuments) zu Fehlern innerhalb des Textes führt, wenn man eine Dokumenteigenschaft entfernt, die noch in Feldern verwendet wird.
Die Umwandlung können Sie auch mittels Strg+Shift+F9 manuell durchführen, wenn Sie die Felder markieren. Nachdem so sichergestellt wurde, dass die Dokumenteigenschaften nicht mehr verwendet werden, werden sie im nächsten Schritt gelöscht.
Und so starten Sie das Makro
In Ihrem Word-Dokument können Sie nun über Extras/Makro/Makros das MarkoRemoveDocumentProperties ausführen. Es erfolgt, wie Sie im Quellcode erkennen, eine Abfrage und erst nach deren Bestätigen werden die Dokumenteigenschaften gelöscht.
Nach dem der Löschvorgang erfolgreich durchgeführt wurde, können Sie (wiederum über Extras/Makro/Makros) das Marko löschen.
In MS Word 2007 finden Sie die Schaltfläche Makros auf der Registerkarte Entwicklertools. Um die Entwicklerregisterkarte einzublenden, öffnen Sie die Word-Optionen mit einem Klick auf das Office-Symbol und wählen die Kategorie Häufig verwendet. Markieren Sie anschließend die Option Entwicklerregisterkarte in der Multifunktionsleiste anzeigen.
Alternativen?
Die Lösung funktioniert, es ist aber natürlich etwas unhandlich jedes Mal das Makro temporär einzufügen.
Als mögliche Alternative könnten Sie z.B. das Makro fest in Ihre Normal.dot integrieren. Ob dies klappt, hängt aber vorrangig davon ab, wie diese Vorlage bei Ihnen intern verwaltet wird. Auch könnte es sein, dass die bei Ihnen geltende Makro-Sicherheitsstufe die Ausführung von unsignierten Makros erst gar nicht zulässt.
Oder Sie wünschen sich hier als Kommentar diese Funktion in den in-STEP BLUE-Wordvorlagen?
Diskutieren Sie mit.