OVH Cloud OVH Cloud

Changement d'auteur dans les documents offices

10 réponses
Avatar
Julius Marcus
Bonjour

ma société a changé de nom et j'ai quelque pb pour la standardisation des
applications office ainsi que les documents

En gros sur les machines faut que je remplace par défaut l'ancien nom de la
ste par le nouveau
Sur tous les documents offices (doc, xls, ppt)qui sont sur le serveur de
fichiers que je remplace le champs Société par le nom de la nouvelle dans la
boite propriété du documents

Existe t il des scripts pour executer ce genre d'actions ( je vois mal le
faire a la main)

10 réponses

Avatar
Julius Marcus
J'ai oublié


merci d'avance



"Julius Marcus" <~borot~@club-internet.fr> a écrit dans le message de news:
%
Bonjour

ma société a changé de nom et j'ai quelque pb pour la standardisation des
applications office ainsi que les documents

En gros sur les machines faut que je remplace par défaut l'ancien nom de
la ste par le nouveau
Sur tous les documents offices (doc, xls, ppt)qui sont sur le serveur de
fichiers que je remplace le champs Société par le nom de la nouvelle dans
la boite propriété du documents

Existe t il des scripts pour executer ce genre d'actions ( je vois mal le
faire a la main)











Avatar
Gilles LAURENT
"Julius Marcus" <~borot~@club-internet.fr> a écrit dans le message de
news:%
| Bonjour

Bonjour,

| ma société a changé de nom et j'ai quelque pb pour la standardisation
| des applications office ainsi que les documents
|
| En gros sur les machines faut que je remplace par défaut l'ancien nom
| de la ste par le nouveau
| Sur tous les documents offices (doc, xls, ppt)qui sont sur le
| serveur de fichiers que je remplace le champs Société par le nom de
| la nouvelle dans la boite propriété du documents
|
| Existe t il des scripts pour executer ce genre d'actions ( je vois
| mal le faire a la main)

En s'appuyant sur le composant ActiveX Dsofile.dll
Je vous invite à consulter cet article de la base des connaissances
Microsoft :
http://support.microsoft.com/kb/q224351/

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Méta-MCI
Bonjour !


Si DSOfile est installé (c'est un objet/serveur-COM, et non un Active-X),
c'est assez facile, avec PeJBshell.

Il faut d'abord sauvegarder le fichier "metatmp.py" dans le répertoire d'où
on lancera le script. Son contenu :
------------------------------------------------------------------
def setauteur(sdir, ldoc, auteur, societe):
import win32com.client
obj = win32com.client.Dispatch('DSOFile.OleDocumentProperties')
print str(ldoc)
for doc in ldoc:
if doc:
obj.Open(sdir+''+doc)
obj.SummaryProperties.Author=auteur
obj.SummaryProperties.Company=societe
obj.Save()
obj.Close()
------------------------------------------------------------------
ATTENTION : les espaces sont significatifs !


Ensuite, dans pejbshell, on va dans ce répertoire, et on tape :
.pyt
execfile('metatmp.py',globals(),globals())
sdir='C:dossierOfDocuments'
trtDOS(sdir+' /B')
lf=lbufferout(-1)
setauteur(sdir, lf, 'NouvelAuteur', 'NouvelleSociété')


Cela affectera tous les fichiers .DOC du répertoire "C:dossierOfDocuments"

Note : les commandes peuvent être mise dans une macro.

Sinon, il y a une autre méthode, en pilotant Word par ole-automation. Mais,
bon, c'est plus lent, et ça oblige à avoir Word installé.
.

@-salutations
--
Michel Claveau
Avatar
Michel Claveau
Re !

En appelant Ponx, il y a un peu plus simple :

Fichier "metatmp.py" :
def setauteur(sdir, ldoc, auteur, societe):
obj = Dispatch('DSOFile.OleDocumentProperties')
for doc in ldoc:
if doc:
obj.Open(sdir+''+doc)
obj.SummaryProperties.Author=auteur
obj.SummaryProperties.Company=societe
obj.Save()
obj.Close()

(les espaces comptent toujours)

Dans PeJBshell, on va dans le répertoire où il y a metatmp.py, et on
tape :
.pyt
sdir='C:dossierOfDocuments'
setauteur(sdir,pxd.aldirre(sdir,'doc$'),'NewAuteur','NewSociété')


Note : 'aldirre' retourne une liste de fichiers sélectionnés par une
expression régulière. Cela donne beaucoup plus de possibilités.

--
@-salutations

Michel Claveau
Avatar
Gilles LAURENT
Bonsoir,

A titre d'exemple, ci-dessous, le script VBScript 'updateProperty.vbs'
permettant de modifier la propriété 'Auteur' des documents Office. Le
composant ActiveX ;-) Dsofile.dll doit être installé sur le serveur de
fichiers.

+++ Pré requis
Procéder à l'installation manuelle du composant sur le serveur de
fichiers :

1- Le télécharger ;-)
2- Ouvrir l'archive DsoFileSetup_KB224351_x86.exe avec un archiveur
3- Extraire le composant Dsofile.dll dans un dossier quelconque
4- Enregistrer le composant à l'aide de la commande regsvr32 Dsofile.dll

+++ Le script à titre d'exemple :

-- Coupez ici : updateProperty.vbs --

Option Explicit

' gestion des erreurs
On Error Resume Next

' déclaration des variables
Dim oDSO, oFS, oFolder
Dim strAuthor, strFile

' lecture de l'argument (Auteur)
strAuthor = WScript.Arguments (0)

' initialisation
Set oDSO = CreateObject("DSOFile.OleDocumentProperties")

' énumération des fichiers transmis comme arguments
Do Until WScript.StdIn.AtEndOfStream

' lecture du nom complet du fichier
strFile = WScript.StdIn.ReadLine
WScript.Echo "[ ] Processing [" & strFile & "] ..."

' ouverture du fichier
oDSO.Open strFile

' évaluation du résultat de l'opération
If Err.Number = 0 Then

' mise à jour de la propriété 'Auteur'
WScript.Echo "[ ] Updating ..."
oDSO.SummaryProperties.Author = strAuthor

' evaluation du résultat de l'opération
If Err.Number = 0 Then
oDSO.Save
Else

' une erreur est survenue
WScript.Echo " => Failed, error=" & Err.Number
End If

' fermeture du fichier
oDSO.Close

Else

' une erreur est survenue
WScript.Echo " => Failed, error=" & Err.Number
End If

Err.Clear

Loop

-- Coupez ici : updateProperty.vbs --

+++ Exécution

1- Pour modifier la propriété 'Auteur' de tous les fichiers .doc et .xls
du dossier courant alors à partir d'une invite de commandes :
>dir /b *.doc,*.xls | cscript updateProperty.vbs "ma_nouvelle_société"

2- Pour modifier la propriété 'Auteur' de tous les fichiers .doc,.xls et
.ppt contenus dans le dossier et tous ses sous-dossiers alors à partir
d'une invite de commandes :
>dir /s /b *.doc,*.xls,*.ppt | cscript updateProperty.vbs
"ma_nouvelle_société"

Note : Un comportement étrange avec les fichiers de type *.ppt. En
effet, si la propriété 'Auteur' n'est pas déjà renseignée alors la mise
à jour va échouer avec le code d'erreur 70. Je poursuis mes recherches
...

Note : Dans cette version, le script ne supporte pas les noms de
fichiers composés de caractères diacritiques. L'ouverture du fichier
échouera avec le code d'erreur 53

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Jacques Barathon [MS]
"Méta-MCI" a écrit dans le message de
news:
Bonjour !


Si DSOfile est installé (c'est un objet/serveur-COM, et non un Active-X),
c'est assez facile, avec PeJBshell.


Il s'agit bien d'un ActiveX, c'est-à-dire d'un objet COM. :-)

C'est assez facile avec PowerShell également (puisque je suis réveillé,
autant faire un peu de prosélytisme):

--- couper ici ---
$societe = "Ma Société"
$dir = "c:test"

$dso = new-object -com DSOFile.OleDocumentProperties

dir $dir*.doc | foreach {
$dso.Open($_.fullname)
$dso.SummaryProperties.Company = $societe
$dso.Save()
$dso.Close()
}
--- couper ici ---

Jacques

Avatar
Michel Claveau
Bonjour, Jacques !


Plusieurs choses :


Il s'agit bien d'un ActiveX, c'est-à-dire d'un objet COM.
Pour moi, ce qui différentie un Active-X d'un simple serveur-COM, c'est



la gestion des évènements et/ou des aspects visuels. Ces éléments étant
absent de DSO-file, j'en déduit que c'est un simple serveur-COM.


Le code PowerShell est intéressant. Dommage que PS ne gère pas encore
les serveurs COM dynamiques (sans librairie de type prédéfinie).



Essaie d'annuler toutes tes réunions du 21 septembre, à partir de 18 h.
En effet, la conjonction des astres indique que c'est le début d'une
période d'abondance liquide (glou-glou), en Ile-de-France.

--
@-salutations

Michel Claveau



Avatar
Julius Marcus
Bon merci a tous
je vais mettre tous ça en application

2 questions me trote dans la tete
- comment modifier les applications offices sur les postes (nom de
l'entreprise ) afin de générer des document directement avec le nom de la
bonne ste
- PowerShell je ne trouve que le rc1 en téléchargement est ce normal

Merci

- remarque du coté de grenoble la période d'abondance liquide (glou-glou) ne
s'est pas arrété durant les congés






"Julius Marcus" <~borot~@club-internet.fr> a écrit dans le message de news:
%
Bonjour

ma société a changé de nom et j'ai quelque pb pour la standardisation des
applications office ainsi que les documents

En gros sur les machines faut que je remplace par défaut l'ancien nom de
la ste par le nouveau
Sur tous les documents offices (doc, xls, ppt)qui sont sur le serveur de
fichiers que je remplace le champs Société par le nom de la nouvelle dans
la boite propriété du documents

Existe t il des scripts pour executer ce genre d'actions ( je vois mal le
faire a la main)











Avatar
Jacques Barathon [MS]
"Julius Marcus" <~borot~@club-internet.fr> a écrit dans le message de news:
%

- PowerShell je ne trouve que le rc1 en téléchargement est ce normal


Oui. PowerShell n'est pas encore finalisé, la v1 est prévue pour la fin de
l'année (pas de date de dispo exacte à ma connaissance). La RC2 devrait
sortir dans les semaines qui viennent.

Jacques

Avatar
Jacques Barathon [MS]
"Michel Claveau" <Enleverles a écrit dans le
message de news:
Bonjour, Jacques !

Plusieurs choses :

Il s'agit bien d'un ActiveX, c'est-à-dire d'un objet COM.
Pour moi, ce qui différentie un Active-X d'un simple serveur-COM, c'est la



gestion des évènements et/ou des aspects visuels. Ces éléments étant
absent de DSO-file, j'en déduit que c'est un simple serveur-COM.


Tu as peut-être raison, ma connaissance du sujet est assez limitée et
superficielle. Mais il se trouve que l'article MS cité par Gilles qualifie
DSOFile de contrôle ActiveX, et je citerai également la documentation MSDN:

An ActiveX control is really just another term for "OLE Object" or, more
specifically, "Component Object Model (COM) Object." In other words, a
control, at the very least, is some COM object that supports the IUnknown
interface and is also self-registering.

http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/intro.asp

Le code PowerShell est intéressant. Dommage que PS ne gère pas encore les
serveurs COM dynamiques (sans librairie de type prédéfinie).


Il me semble avoir vu une discussion sur le sujet sur le forum dédié à
PowerShell (en anglais). C'est déjà assez ancien, il faudra que je fasse une
petite recherche pour retrouver ce qui s'est dit exactement.

Essaie d'annuler toutes tes réunions du 21 septembre, à partir de 18 h.
En effet, la conjonction des astres indique que c'est le début d'une
période d'abondance liquide (glou-glou), en Ile-de-France.


C'est noté!

Jacques