Question Export vers XLS

Plus d'informations
il y a 16 ans 8 mois #821 par bordin
Réponse de bordin sur le sujet Re:Export vers XLS
Bonjour,

Merci Janel çà marche avec tes 2 astuces!

Je profite par la même occasion pour une petite question sur la facon de copier une feuille d'un classeurA vers un autre classeurB.
J'ai essayé çà sans succès!!
[code:1]
$excel = new-object -com Excel.Application
$classeurSource=\"c:\controlSCA\check-equipement.xls\"
$NomClasseurDestination=\"c:\ControlSCA\ControlSCA.xls\"
$ClasseurDestination = $excel.Workbooks.Open($NomclasseurDestination)
$MonClasseur = $excel.Workbooks.Open($classeurSource)
$MaFeuille=$MonClasseur.activeWorkSheet
$Mafeuille.Copy (After) $ClasseurDestination.Sheets(1)[/code:1]

Si un expert excel est dans les parages! :)<br><br>Message édité par: Arnaud, à: 8/08/07 17:09

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 8 mois #824 par bordin
Réponse de bordin sur le sujet Re:Export vers XLS
Bonjour,

çà marche juste un peu mieux avec çà:

[code:1]$excel = new-object -com Excel.Application
$NomclasseurSource=\&quot;c:\controlSCA\Rapport\check-equipement.xls\&quot;
$ClasseurDestination = $excel.Workbooks.Add()
$classeurSource=$excel.Workbooks.Open($NomclasseurSource)
$MaFeuille=$ClasseurSource.worksheets.Item(1)
Cà bug ici: $Mafeuille.Copy $classeurDestination.worksheets.item(1)
$ClasseurDEstination.saveAs(\&quot;c:\controlSCA\rapport\test.xls\&quot;«»)
$excel.Visible=$true
$excel.quit()[/code:1]

Mais je bug au niveau de la copie de la feuille!!
Autre chose, $excel.quit() ne tue pas le process et reste en mémoire!

Merci pour votre aide.<br><br>Message édité par: Arnaud, à: 8/08/07 17:09

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2605 par Bredin Samuel
Réponse de Bredin Samuel sur le sujet Re:Export vers XLS
Bonjour CamilleB
camilleB écrit:

[code:1]$excel = new-object -com Excel.Application
$NomclasseurSource=\&quot;c:\controlSCA\Rapport\check-equipement.xls\&quot;
$ClasseurDestination = $excel.Workbooks.Add()
$classeurSource=$excel.Workbooks.Open($NomclasseurSource)
$MaFeuille=$ClasseurSource.worksheets.Item(1)
Cà bug ici: $Mafeuille.Copy $classeurDestination.worksheets.item(1)
$ClasseurDEstination.saveAs(\&quot;c:\controlSCA\rapport\test.xls\&quot;«»)
$excel.Visible=$true
$excel.quit()[/code:1]
Mais je bug au niveau de la copie de la feuille!!

Une idée peut être pour copier avant ta première feuille :
[code:1]
$Mafeuille.Copy($classeurDestination.worksheets.item(1),[system.type]::Missing)
[/code:1]
Après ta première feuille :
[code:1]
$Mafeuille.Copy([system.type]::Missing,$classeurDestination.worksheets.item(1))
[/code:1]

Autre chose, $excel.quit() ne tue pas le process et reste en mémoire!

C'est vrai le processus ne se kill pas.
Essai :
[code:1]
Stop-process @(get-process | Where {$_.MainWindowHandle -eq $excel.Hwnd})[0].Id
[/code:1]
à la place de :
[code:1]
$excel.quit()
[/code:1]

Pour que ça fonctionne il faut que Excel soit visible, donc ajoute

[code:1]$excel.Visible = $True[/code:1]

avant le stop-process

Bonne journée

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2608 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Export vers XLS
Mephisto écrit:

camilleB écrit:

Autre chose, $excel.quit() ne tue pas le process et reste en mémoire!

C'est vrai le processus ne se kill pas.
Essai :
[code:1]Stop-process @(get-process | Where {$_.MainWindowHandle -eq $excel.Hwnd})[0].Id [/code:1]

Une autre approche :
[code:1]
$excel = new-object -com Excel.Application
$excel.quit()
$excel=$null
[GC]::collect()
[/code:1]
Il faut forcer la libération de l'objet COM, à priori PS garde le process d'Excel actif car la variable $excel n'est pas libérée(finalisée), et comme les objets COM se basent sur des compteurs de référence, cette variable référence tjr Excel.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2622 par Bredin Samuel
Réponse de Bredin Samuel sur le sujet Re:Export vers XLS
Merci pour l'info.
Beaucoup mieux.
Surtout que \&quot;ma\&quot; technique ne fonctionne pas si le script est lancé dans une tache planifiée et un compte de service n'ayant pas ouvert de session.
Dans ce cas la propriété MainWindowHandle = 0. (Pas d'interface graphique).
Merci quand même à Jamel, sa méthode m'a beaucoup servit.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.076 secondes
Propulsé par Kunena