[R] Copier une feuille Excel d'un classeur vers un autre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

[R] Copier une feuille Excel d'un classeur vers un autre

#1

Message par Ahbadiane »

Bonjour,

Ce que je cherche à faire : Copier une feuille Excel d'un classeur vers un autre classeur existant
Ce que j'ai réussi à faire : Copier une feuille Excel dans le même classeur

Le code joint provoque l'erreur :
(11) : ==> The requested action with this object has failed.
If IsObj($oCopieVers) Then $oFic1.ActiveWorkbook.Sheets($sOngletFic1).Copy($oCopieVers)^ ERROR

Si je remplace en ligne 10 : Global $oCopieVers = $oFic2.ActiveWorkbook.Sheets(1)
par (pour copier dans le même classeur) : Global $oCopieVers = $oFic1.ActiveWorkbook.Sheets(1)
la copie se passe sans erreur

Si vous avez la solution à mon problème ...

Code : Tout sélectionner

#include <Excel.au3>
Global Const $sFic1 = "Test1.xls"
Global Const $sOngletFic1 = "Onglet1Test1"
Global Const $sFic2 = "Test2.xls"

Global $oFic1 = _ExcelBookOpen(@ScriptDir & "\" & $sFic1)
Global $oFic2 = _ExcelBookOpen(@ScriptDir & "\" & $sFic2)

; Objet destination de la copie
Global $oCopieVers = $oFic2.ActiveWorkbook.Sheets(1)
If IsObj($oCopieVers) Then $oFic1.ActiveWorkbook.Sheets($sOngletFic1).Copy($oCopieVers)
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

[R] Copier une feuille Excel d'un classeur vers un autre

#2

Message par Ahbadiane »

La solution était dans l'ordre d'ouverture des deux fichiers et dans la création d'un seul objet Excel

Code : Tout sélectionner

Global $sFic1 = "Test1.xls"
Global $sFic2 = "Test2.xls"
Global $oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = True
$oExcel.WorkBooks.Open(@ScriptDir & "\" & $sFic2)
$oExcel.WorkBooks.Open(@ScriptDir & "\" & $sFic1)
$oExcel.Application.Workbooks($sFic1).Sheets("Feuil1").Select
$oExcel.Application.ActiveWorkbook.Sheets("Feuil1").Copy($oExcel.Application.Workbooks($sFic2).Sheets(1))
Répondre