En vbs, est-il possible de modifier le contenu d'un fichier Word [Résolu]

cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 5 avril 2006 à 21:22 - Dernière réponse : cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 6 avril 2006 à 19:12
Bonsoir à tous....

J'ai crée un fichier (trame) .doc dans lequel j'ai remplacé certains mots par "[PROD-total-C]", [PROD-libre-C]...
Je copie ce fichier sous un nouveau nom (.rtf).

FicInput = "d:\ControleRICOH\Trame RICOH - Controle journalier ORACLE.doc"
FicOutput = Replace(Replace(FicInput, "Trame ",""), "ORACLE.doc", "ORACLE du " & Right(Date,4) &_
"-" & Mid(Date, 4, 2) & "-" & Left(Date, 2) & ".rtf")
fso.CopyFile FicInput, FicOutput

Mon souhait serait d'ouvrir ce nouveau fichier (.doc ou .rtf) et
et remplacer les valeurs "[PROD-total-C]", [PROD-libre-C]...
par le contenu de variables issues de mon script vbs.
Celui-ci récupère l'espace disk (total, libre..) de plusieurs disks et lecteurs réseaux.

J'ai parcouru ce forum, exalead et MSDN.
Rien ne m'a inspiré.
Si quelqu'un d'entre-vous a une idée ou une orientation.
Merci.
jean-marc

J'utilise vbs pour ouvrir des .mdb, .txt ou .xls,mais là, c'est la première fois
que je suis confronté à word.
=======================================
mauvaise synthaxe:
Dim oWordApp
Set oWordApp = CreateObject("Word.Application")


Set oDoc = oWordApp.Documents.Open(FicOutput, 1)
'un process winword est ouvert, mais pas mon fichier
=======================================

Do While Not ObjTextStream.AtEndOfStream
strtmp = Split(objTextStream.ReadLine,".")
For i = 0 To UBound(strtmp)
strtmp = Replace(strtmp, "[PROD-total-C]", [PROD-total-C])
strtmp = Replace(strtmp, "[PROD-libre-C]", [PROD-libre-C])
strtmp = Replace(strtmp, "[PROD-total-D]", [PROD-total-D])
strtmp = Replace(strtmp, "[PROD-libre-D]", [PROD-libre-D])
Next
Loop
Afficher la suite 

6 réponses

Meilleure réponse
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 avril 2006 à 18:33
3
Merci
il suffit de faire :

Dim Word
Dim Doc

Set Word = CreateObject("Word.Application")
Word.DisplayAlerts = wdAlertsNone
Set Doc = Word.Documents.Open("i:\a.doc", True)
If Not Doc Is Nothing Then
Doc.Tables(1).Cell(2, 2).Range.Text = "=Prod-total-C"
Doc.Tables(1).Cell(2, 3).Range.Text = "=Prod-libre-C"
Doc.Tables(1).Cell(3, 2).Range.Text = "=Prod-total-D"
Doc.Tables(1).Cell(3, 3).Range.Text = "=Prod-libre-D"
Doc.Tables(1).Cell(4, 2).Range.Text = "=Prod-total-E"
Doc.Tables(1).Cell(4, 3).Range.Text = "=Prod-libre-E"
Doc.Tables(1).Cell(5, 2).Range.Text = "=Prod-total-F"
Doc.Tables(1).Cell(5, 3).Range.Text = "=Prod-libre-F"
Doc.Tables(1).Cell(6, 2).Range.Text = "=Prod-total-G"
Doc.Tables(1).Cell(6, 3).Range.Text = "=Prod-libre-G"
Doc.Save
MsgBox "Terminé", vbInformation
End If
Word.Quit

pour le mettre au point, a moins d'avoir VB6 sous la main, utilise l'environnement VBA (Alt + F11 dans Word)
en tatonnant un peu , tu arriveras a tes fins

Renfield
Admin CodeS-SourceS - MVP Visual Basic

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 avril 2006 à 09:50
0
Merci
pourquoi joues tu avec un TextStream... ?

Renfield
Admin CodeS-SourceS - MVP Visual Basic
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 avril 2006 à 09:59
0
Merci
il suffit de faire :

Dim Word
Dim Doc

Set Word = CreateObject("Word.Application")
Word.DisplayAlerts = wdAlertsNone

Set Doc = Word.Documents.Open("i:\a.doc", True)
If Not Doc Is Nothing Then
Doc.Content = Replace(Doc.Content, "[PROD-total-C]", TotalC)
Doc.Save
MsgBox "Terminé", vbInformation
End If
Word.Quit

Renfield
Admin CodeS-SourceS - MVP Visual Basic
cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 6 avril 2006 à 17:12
0
Merci
Bonjour à tous....

Merci Renfield,
Je vais testé. Je sais que TextStream n'est pas la bonne synthaxe,
mais je ne connais pas les fonctions VBA de Word.
Je vais regarder l'help de Word.
cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 6 avril 2006 à 18:02
0
Merci
Bonjour,

Renfield, avec ta synthaxe, les zones en variables ont bien été remplacées,
mais j'ai perdu la présentation de mon document !!!

Fichier avant modif:

ESPACE LIBRE SIBL-DB-PROD<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


parcourrrir


PARTITION

,
ESPACE TOTAL

,
ESPACE DISPO

,
COMMENTAIRES

,
----

C : (SYSTEM)

,
[PROD-total-C]

,
[PROD-libre-C]

,


,
----

D : (SWAP)

,
[PROD-total-D]

,
[PROD-libre-D]

,
,
----

E : (ARCHIVELOG)

,
[PROD-total-E]

,
[PROD-libre-E]

,
Signaler si espace libre < 500Mo (archives)

Le vendredi : signaler si < 650Mo (archives)

,
----

F: (DATA)

,
[PROD-total-F]

,
[PROD-libre-F]

,

,
----

G: (INDEX)

,
[PROD-total-G]

,
[PROD-libre-G]



fichier après modif:





ESPACE LIBRE SIBL-DB-PROD


parcourrrir


PARTITION


ESPACE TOTAL


ESPACE DISPO


COMMENTAIRES





C : (SYSTEM)


10 Go ' c'est bien le contenu de ma variable PROD_total_C


8 Go ' c'est bien le contenu de ma variable PROD_libre_C








D : (SWAP)


27 Go


10 Go








E : (ARCHIVELOG)


[PROD-total-E]


[PROD-libre-E]


Signaler si espace libre < 500Mo (archives)


Le vendredi : signaler si < 650Mo (archives)





F: (DATA)



Donc, la solution finale ne doit pas être trop eloignée.
Je suis optimiste.

jean-marc
cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 6 avril 2006 à 19:12
0
Merci
Re,

Merci Renfield.
Je n'ai plus qu'à regarder l'aide dans la doc,car j'ai plusieurs tableaux à renseigner
ainsi qu'à remplacer des zones texte.

Résultat obtenu:

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />





ESPACE LIBRE SIBL-DB-PROD


parcourrrir


PARTITION

,
ESPACE TOTAL

,
ESPACE DISPO

,
COMMENTAIRES

,
----

C : (SYSTEM)

,
9,76 Go

,
2,19 Go

,


,
----

D : (SWAP)

,
27,48 Go

,
10,59 Go

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.