Clever-Excel-Forum

Normale Version: BuiltInDocumentProperties
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

warum kann man nicht in einer mit "set document" geöffneten Datei die BuiltInDocumentProperties "Autor", "Last author" und "Title" beliebig ändern.

In der Datei, in der der Makro läuft, ist das möglich.

Code:
Sub T_1()
Dim Doc As Document

file = "c:\users\VStudio\desktop\neu.docx"
Set Doc = Documents.Open(file)
Doc.BuiltInDocumentProperties("Author") = "Autor"
Doc.BuiltInDocumentProperties("Last author") = "neuer Autor"
Doc.BuiltInDocumentProperties("Title") = "neuer Titel"
Doc.Close True
End Sub

Der Test war zwar mit Word, es sollte aber keinen Unterschied zu Excel geben.

Hintergrund:

Einige MS-Office-malware setzt diese Properties, die Namen vermutlich aus dem Python-Projekt "Names" (https://pypi.org/project/names/). Eine Antwort würde helfen das Vorgehen der crooks besser zu verstehen.

Danke und

Mfg
Ich kann in diesem Workbook ändern:

Code:
Sub M_snb()
    With ThisWorkbook
        .BuiltinDocumentProperties("author") = "snb"
        .BuiltinDocumentProperties("title") = "snb_000"
        .BuiltinDocumentProperties("last author") = "snb_001"
    End With

    With GetObject("G:\OF\adressen.xlsx")
        .BuiltinDocumentProperties("author") = "snb_009"
        .BuiltinDocumentProperties("title") = "snb_000"
        .BuiltinDocumentProperties("last author") = "snb_001"   'ohne Erfolg
        .Save
    End With

End Sub
Hallo snb,

da ich diese Dateien nicht auf meinen PC lade, hier wie es unter Linux mit dem Befehl "file" aussieht:

Code:
Composite Document File V2 Document, Little Endian, Os: Windows, Version 6.2, Code page: 1252, Title: Animi., Author: Zoe Schneider, Template: Normal.dotm, Revision Number: 1, Name of Creating Application: Microsoft Office Word, Create Time/Date: Fri Oct 16 14:32:00 2020, Last Saved Time/Date: Fri Oct 16 14:32:00 2020, Number of Pages: 1, Number of Words: 2755, Number of Characters: 15704, Security: 8

Der Name des Autors "Zoe Schneider" stammt vermutlich aus der Python library "Names". Beim Speichern wurde nicht der Name des Nutzers (Environ("User")) eingefügt. Die Zeitstempel sind regelmäßig einige Stunden bevor die Datei in der Datenbank hochgeladen wird, also vermutlich unverändert. Zeitpunkt des Erstellens und letzte Speicherung sind (fast) immer identisch.

In einigen Fällen wird auch ein ebenfalls gespoofter "Last user" angegeben.

Einige Modifikation des Templates müssen per VBA vorgenommen worden sein. Die Frage wäre, ob die crooks zusätzlich Manipuationen im Zip-file vornehmen (ohne den Zeitspempel 1.1.1989 zu ändern).

mfg
Hallo,

ich bin jetzt nicht sicher, ob ich richtig verstanden habe, was Du genau möchtest, aber mit VBA kommst
Du nicht an alle Properties einer Datei dran, wie z.B. Custom Document Properties. Ich hatte früher dazu
eine DLL = DSOFile.dll genutzt; googlen nach Custom Document Properties+DSO+DLL. Die DLL ist nur
in 32 Bit verfügbar, wird auch nicht mehr von MS supported und ist als unsicher markiert, wenn ich
jetzt richtig informiert bin.

Gruß
In Builindocumentproperties wrid kein environ("username") verwendet, doch application.username. Application ist Word oder Excel oder was immer.
Danke, DSO-File war die Lösung:

Code:
' Verweis auf DSO OLE Document Properties

Public Sub Test()
    
    Dim objOleDocumentProperties As DSOFile.OleDocumentProperties
    Dim objSummaryProperties As DSOFile.SummaryProperties
    
    Set objOleDocumentProperties = New DSOFile.OleDocumentProperties
    
    file = "c:\users\office\desktop\Mappe1.xlsx"
    
    Call objOleDocumentProperties.Open(sFileName:=file)
    
    Set objSummaryProperties = objOleDocumentProperties.SummaryProperties
    
    With objSummaryProperties
        .Title = "Mein Titel"
        .Company = "Meine Firma"
        .Author = "Lisa Fitz"
        .LastSavedBy = "Nobody"
        '.ApplicationName = "Rumpelstilz"
        '.DateCreated = "2.1.1912"
    End With
    
    With objOleDocumentProperties
        Call .Save
        Call .Close
    End With
    
    Set objSummaryProperties = Nothing
    Set objOleDocumentProperties = Nothing
End Sub

Damit ist es möglich vergleichsweise einfach für jede Datei einen anderen file-hash zu erzeugen. Der Inhalt wird dann nur in jeder x-ten Datei geändert.

mfg