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