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))
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 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
X = SetFileTimeWrite(Handle, File_Time, File_Time, File_Time) CloseHandle Handle
End Function
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 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
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 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
X = SetFileTimeWrite(Handle, File_Time, File_Time, File_Time) CloseHandle Handle
End Function
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 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
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
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
.
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 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
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
-----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 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
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