Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changer les propriétés d'un document Word

2 réponses
Avatar
Dakota
Bonjour,

je voudrais changer les propri=E9t=E9s titre, objet,=20
cat=E9gorie, auteur ... d'une centaine de documents Word.

J'arrive =E0 les modifier avec du code en VB mais la date=20
des fichiers devient la date actuelle. Je voudrais que la=20
date ne soit pas modifi=E9e.
Il y a s=FBrement moyen de lire la date du fichier,=20
d'effectuer les modifications, puis de remettre la date=20
d'origine ?

Avez-vous une id=E9e ?

Merci

Voici le code utilis=E9 pour modifier les propri=E9t=E9s :


Dim doc As Word.Document
Dim wd As Word.Application

For X =3D 1 To N
TB01.Text =3D Str(X)
Set wd =3D New Word.Application
Set doc =3D wd.Documents.Open("C:\888\" & F(X))

doc.BuiltInDocumentProperties(wdPropertyTitle) =3D "TOTO"
doc.BuiltInDocumentProperties(wdPropertyAuthor) =3D "TITI"
doc.BuiltInDocumentProperties(wdPropertyKeywords) =3D ""
doc.BuiltInDocumentProperties(wdPropertyCompany) =3D "TATA"

doc.Close wdSaveChanges
wd.Quit
Set doc =3D Nothing
Set wd =3D Nothing

Next X

2 réponses

Avatar
Thierry BERTRAND
J'avais un bidule pour modifier les dates des fichiers (style 01/01/2001
01:05 pour indiquer la version 1.05 du fichier) que je joins en copier
coller.
Tu dois pouvoir adapter sans problème en utlisant en plus la fonction
getfiletime avant...

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type


Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2

Private Declare Function SetFileTimeWrite Lib "kernel32" Alias "SetFileTime"
(ByVal hFile As Long, lpCreateTime As FILETIME, lpLastAccessTime As
FILETIME, lpLastWriteTime As FILETIME) As Long

Public Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime"
(ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As
FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime
As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long)
As Long

Private Declare Function LocalFileTimeToFileTime Lib "kernel32"
(lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long


Sub ChangeDateModif(BarreStatut As Control)
Dim Year As Integer, Month As Integer
Dim Day As Integer, Hour As Integer
Dim Minute As Integer, Second As Integer
Dim Timestamp As Variant
Dim Filename As String
Dim X As Integer
Dim WRKFile As String

Year = 2000
Month = 1
Day = 1
Hour = 0
Minute = 0
Second = 0


Timestamp = DateSerial(Year, Month, Day) + TimeSerial(Hour, Minute,
Second)
Timestamp = InputBox("Date et heure de référence?", "Changement de la
date de modification", Timestamp)
Filename = InputBox("Nom du fichier à modifier", "Changement de la date
de modification", "")
If Filename = "" Then Exit Sub
If InStr(Filename, "*") < 1 Then
If Right(Filename, 1) <> "" Then
X = ModifyFileStamp(Filename, Timestamp)
Else
DoCmd.Hourglass True
Parcours Filename, Timestamp, BarreStatut
DoCmd.Hourglass False
End If
Else
ListeRunning = False
DoCmd.Hourglass True
WRKFile = ListeFile(Filename)
While WRKFile <> ""
BarreStatut.Caption = Filename
X = ModifyFileStamp(WRKFile, Timestamp)
WRKFile = ListeFile(Filename)
dummy = DoEvents()
Wend
ListeRunning = False
DoCmd.Hourglass False
End If
MsgBox "The time and date stamp was updated"
End Sub


Function ModifyFileStamp(Filename As String, Timestamp As Variant) As
Integer
Dim X As Long
Dim Handle As Long
Dim System_Time As SYSTEMTIME
Dim File_Time As FILETIME
Dim Local_Time As FILETIME

System_Time.wYear = Year(Timestamp)
System_Time.wMonth = Month(Timestamp)
System_Time.wDay = Day(Timestamp)
System_Time.wDayOfWeek = WeekDay(Timestamp) - 1
System_Time.wHour = Hour(Timestamp)
System_Time.wSecond = Second(Timestamp)
System_Time.wMilliseconds = 0


X = SystemTimeToFileTime(System_Time, Local_Time)

X = LocalFileTimeToFileTime(Local_Time, File_Time)

Handle = CreateFile(Filename, GENERIC_WRITE, FILE_SHARE_READ Or
FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)

X = SetFileTimeWrite(Handle, File_Time, File_Time, File_Time)
CloseHandle Handle

End Function
Avatar
Dakota
Un grand merci.
J'essaye ça.
Mario
-----Message d'origine-----
J'avais un bidule pour modifier les dates des fichiers


(style 01/01/2001
01:05 pour indiquer la version 1.05 du fichier) que je


joins en copier
coller.
Tu dois pouvoir adapter sans problème en utlisant en


plus la fonction
getfiletime avant...

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type


Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2

Private Declare Function SetFileTimeWrite Lib "kernel32"


Alias "SetFileTime"
(ByVal hFile As Long, lpCreateTime As FILETIME,


lpLastAccessTime As
FILETIME, lpLastWriteTime As FILETIME) As Long

Public Declare Function GetFileTime Lib "kernel32"


Alias "GetFileTime"
(ByVal hFile As Long, lpCreationTime As FILETIME,


lpLastAccessTime As
FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function SystemTimeToFileTime


Lib "kernel32" (lpSystemTime
As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Declare Function CreateFile Lib "kernel32"


Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As


Long, ByVal
dwShareMode As Long, ByVal lpSecurityAttributes As Long,


ByVal
dwCreationDisposition As Long, ByVal


dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32"


(ByVal hObject As Long)
As Long

Private Declare Function LocalFileTimeToFileTime


Lib "kernel32"
(lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As


Long


Sub ChangeDateModif(BarreStatut As Control)
Dim Year As Integer, Month As Integer
Dim Day As Integer, Hour As Integer
Dim Minute As Integer, Second As Integer
Dim Timestamp As Variant
Dim Filename As String
Dim X As Integer
Dim WRKFile As String

Year = 2000
Month = 1
Day = 1
Hour = 0
Minute = 0
Second = 0


Timestamp = DateSerial(Year, Month, Day) + TimeSerial


(Hour, Minute,
Second)
Timestamp = InputBox("Date et heure de


référence?", "Changement de la
date de modification", Timestamp)
Filename = InputBox("Nom du fichier à


modifier", "Changement de la date
de modification", "")
If Filename = "" Then Exit Sub
If InStr(Filename, "*") < 1 Then
If Right(Filename, 1) <> "" Then
X = ModifyFileStamp(Filename, Timestamp)
Else
DoCmd.Hourglass True
Parcours Filename, Timestamp, BarreStatut
DoCmd.Hourglass False
End If
Else
ListeRunning = False
DoCmd.Hourglass True
WRKFile = ListeFile(Filename)
While WRKFile <> ""
BarreStatut.Caption = Filename
X = ModifyFileStamp(WRKFile, Timestamp)
WRKFile = ListeFile(Filename)
dummy = DoEvents()
Wend
ListeRunning = False
DoCmd.Hourglass False
End If
MsgBox "The time and date stamp was updated"
End Sub


Function ModifyFileStamp(Filename As String, Timestamp


As Variant) As
Integer
Dim X As Long
Dim Handle As Long
Dim System_Time As SYSTEMTIME
Dim File_Time As FILETIME
Dim Local_Time As FILETIME

System_Time.wYear = Year(Timestamp)
System_Time.wMonth = Month(Timestamp)
System_Time.wDay = Day(Timestamp)
System_Time.wDayOfWeek = WeekDay(Timestamp) - 1
System_Time.wHour = Hour(Timestamp)
System_Time.wSecond = Second(Timestamp)
System_Time.wMilliseconds = 0


X = SystemTimeToFileTime(System_Time, Local_Time)

X = LocalFileTimeToFileTime(Local_Time, File_Time)

Handle = CreateFile(Filename, GENERIC_WRITE,


FILE_SHARE_READ Or
FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)

X = SetFileTimeWrite(Handle, File_Time, File_Time,


File_Time)
CloseHandle Handle

End Function


.