Question
Faire un append sur un document Word existant
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 3 mois #16514
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Faire un append sur un document Word existant
tehKNi écrit:
tehKNi écrit:
Quelle version d'office utilises-tu ?
Enregistre une macro pour ton opération, cela peut te donner qq pistes.
C'est tout à fait normal, Ole Automation est spécifique.voilà mon bout de script (mais effectivement je me rends compte que plus j'avance moins ça ressemble à du PS) :
tehKNi écrit:
C'est comme tout, tant qu'on ne sait pas faire on perd du temps.enfin bon ça fait que depuis 6h que je suis sur un truc aussi débile
Quelle version d'office utilises-tu ?
Enregistre une macro pour ton opération, cela peut te donner qq pistes.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- tehKNi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 12 ans 3 mois #16518
par tehKNi
Réponse de tehKNi sur le sujet Re:Faire un append sur un document Word existant
C'est du Office 2010.
Effectivement le macro m'aurait aidé pas mal si j'y avais pensé avant...
Cependant la traduction en elle-même me pose encore quelques problèmes sur ça :
VBA : Selection.GoTo wdGoToBookmark, , , \"\EndOfDoc\"
PS : source_doc.GoTo('wdGoToBookMark',[ref]$null,[ref]$null,[ref]$null,[ref]'\EndOfDoc'
Bon ça clignote de tous les côtés et ça veut absolument pas faire ce que je veux à ce stade, je ne sais pas trop comment m'y prendre.
Effectivement le macro m'aurait aidé pas mal si j'y avais pensé avant...
Cependant la traduction en elle-même me pose encore quelques problèmes sur ça :
VBA : Selection.GoTo wdGoToBookmark, , , \"\EndOfDoc\"
PS : source_doc.GoTo('wdGoToBookMark',[ref]$null,[ref]$null,[ref]$null,[ref]'\EndOfDoc'
Bon ça clignote de tous les côtés et ça veut absolument pas faire ce que je veux à ce stade, je ne sais pas trop comment m'y prendre.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 3 mois #16521
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Faire un append sur un document Word existant
Ole Automation utilise COM et le type
variant
, il faut utiliser la classe
Missing
comme dans l'exemple suivant :
[code:1]
#<-- Paramétres de la méthode SaveAS
#Récupére le format de sauvegarde de l'énumération xlFileFormat à partir de l'assembly interop Excel
$FileFormat=[Microsoft.Office.Interop.Excel.xlFileFormat]::«»xlCsv
#Missing indique pour un objet COM un paramètre absent.
# [System.Type]::Missing] n'est pas égal à $Null
$Password=[System.Type]::Missing
$WriteResPassword=[System.Type]::Missing
$ReadOnlyRecommended=$False
$CreateBackup=$False
$AddToMru=$False
$TextCodepage=[System.Type]::Missing
$TextVisualLayout=[System.Type]::Missing
$LangueLocal=$False
#-->
#On choisi d'enregistrer la feuille sélectionnée
# Version simplifiée : $Classeur.SaveAs($NomFichierTmp,$FileFormat)
$Classeur.SaveAs($NomFichierTmp,
$FileFormat,
$Password,
$WriteResPassword,
$ReadOnlyRecommended,
$CreateBackup,
$AddToMru,
$TextCodepage,
$TextVisualLayout,
$LangueLocal)
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 6/12/13 11:58
[code:1]
#<-- Paramétres de la méthode SaveAS
#Récupére le format de sauvegarde de l'énumération xlFileFormat à partir de l'assembly interop Excel
$FileFormat=[Microsoft.Office.Interop.Excel.xlFileFormat]::«»xlCsv
#Missing indique pour un objet COM un paramètre absent.
# [System.Type]::Missing] n'est pas égal à $Null
$Password=[System.Type]::Missing
$WriteResPassword=[System.Type]::Missing
$ReadOnlyRecommended=$False
$CreateBackup=$False
$AddToMru=$False
$TextCodepage=[System.Type]::Missing
$TextVisualLayout=[System.Type]::Missing
$LangueLocal=$False
#-->
#On choisi d'enregistrer la feuille sélectionnée
# Version simplifiée : $Classeur.SaveAs($NomFichierTmp,$FileFormat)
$Classeur.SaveAs($NomFichierTmp,
$FileFormat,
$Password,
$WriteResPassword,
$ReadOnlyRecommended,
$CreateBackup,
$AddToMru,
$TextCodepage,
$TextVisualLayout,
$LangueLocal)
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 6/12/13 11:58
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- tehKNi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 12 ans 3 mois #16523
par tehKNi
Réponse de tehKNi sur le sujet Re:Faire un append sur un document Word existant
pas mal, ça me fait avancer mais ça ne marche toujours pas 
J'en suis ici :
$source_doc.GoTo([ref]-1,[system.type]::misssing,[system.type]::misssing,'\EndOfDoc')
et j'ai droit à...
\"GoTo : Argument: '2' should be a System.Management.Automation.PSReference. Use [ref]
Bon évidemment quand j'utilise [ref] un peu partout ça ne marche pas vraiment mieux (bon, pareil en fait
).
J'en suis ici :
$source_doc.GoTo([ref]-1,[system.type]::misssing,[system.type]::misssing,'\EndOfDoc')
et j'ai droit à...
\"GoTo : Argument: '2' should be a System.Management.Automation.PSReference. Use [ref]
Bon évidemment quand j'utilise [ref] un peu partout ça ne marche pas vraiment mieux (bon, pareil en fait
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 3 mois #16526
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Faire un append sur un document Word existant
tehKNi écrit:
Peux-tu nous communiquer le code actuel ?
J'ai effectivement du code avec et sans usage de [ref] dans le doute j'ai pris celui sans en me disant que si nécessaire le parseur le signalerait.Bon évidemment quand j'utilise [ref]
Peux-tu nous communiquer le code actuel ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- tehKNi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 12 ans 3 mois #16527
par tehKNi
Réponse de tehKNi sur le sujet Re:Faire un append sur un document Word existant
[code:1]$files = Get-childItem $dir
$objword = New-Object -ComObject Word.Application
$objword.Visible = $true
$source_doc = $objword.Documents.Open($source)
foreach ($file in $files) {
$original_doc = $objword.Documents.Open($file.FullName)
Write-Host $file.FullName
$original_doc.ActiveWindow.Selection.WholeStory()
$copy = $original_doc.ActiveWindow.Selection.Copy()
$source_doc.Activate()
$wdGotoBookmark=-1
$wdFormatOriginalFormatting=16
$source_doc.GoTo($wdGotoBookmark,[System.Type]::Missing,[System.Type]::Missing,'\EndOfDoc')
$source_doc.ActiveWindow.Selection.PasteAndFormat($wdFormatOriginalFormatting)
#$objword.Quit([ref]'wdDoNotSaveChanges')
}[/code:1]
Merci
Message édité par: tehKNi, à: 6/12/13 15:35<br><br>Message édité par: tehKNi, à: 8/12/13 14:58
$objword = New-Object -ComObject Word.Application
$objword.Visible = $true
$source_doc = $objword.Documents.Open($source)
foreach ($file in $files) {
$original_doc = $objword.Documents.Open($file.FullName)
Write-Host $file.FullName
$original_doc.ActiveWindow.Selection.WholeStory()
$copy = $original_doc.ActiveWindow.Selection.Copy()
$source_doc.Activate()
$wdGotoBookmark=-1
$wdFormatOriginalFormatting=16
$source_doc.GoTo($wdGotoBookmark,[System.Type]::Missing,[System.Type]::Missing,'\EndOfDoc')
$source_doc.ActiveWindow.Selection.PasteAndFormat($wdFormatOriginalFormatting)
#$objword.Quit([ref]'wdDoNotSaveChanges')
}[/code:1]
Merci
Message édité par: tehKNi, à: 6/12/13 15:35<br><br>Message édité par: tehKNi, à: 8/12/13 14:58
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Faire un append sur un document Word existant