Page 1 sur 1
[R] Excel : Pb avec ExcelSheeetList
Posté : lun. 26 mars 2012 17:56
par ltrautoit
Bonjour,
Je souhaite utiliser la fonction "_ExcelSheetList" dans ma macro, mais je constate le problème suivant :
Si j'utilise un nouveau fichier excel (ouvert avec _ExcelBookNew), réponse OK, j'ai bien la liste des feuilles excel.
Code : Tout sélectionner
Local $oExcel = _ExcelBookNew()
$aArray = _ExcelSheetList($oExcel)
_arraydisplay($aArray)
Si j'utilise un fichier excel déja ouvert (que je rattache avec succès via _ExcelBookAttach), j'ai une erreur de la part de l'UDF Excel :
Line 1055
Local îTemp = $oExcel.ActiveWorkbook
Error : The requested action with this object has failed
Autoit v3.3.6.1
UDF Excel : La version d'origine incluse (1.5, je crois)
Auriez-vous idées, pistes, codes pour résoudre cela ?
Merci.
Edit : Correction du titre (avant de me faire tirer les oreilles)
Re: [..] Excel : Pb avec ExcelSheeetList
Posté : mar. 27 mars 2012 13:15
par TopXm
Salut,
Il est bien indiqué dans l'aide de _ExcelSheetList
<<An Excel object opened by a preceding call to _ExcelBookOpen() or _ExcelBookNew()>>
J'ai fait l'essai et en effet avec un _ExcelBookAttach le ExcelSheetList plante :
► Afficher le texte
Code : Tout sélectionner
#include <Excel.au3>
#include <Array.Au3>
$ItrAutoit = @MyDocumentsDir & "\test_itrautoit.xls"
;Local $oExcel = _ExcelBookOpen($ItrAutoit)
Local $oExcel = _ExcelBookAttach('test_itrautoit.xls', 'FileName')
If @error Then
MsgBox(16, '', 'Impossible de faire le _ExcelBookAttach')
Exit
EndIf
ConsoleWrite('On tente un _ExcelSheetList' & @CRLF)
Local $aArray = _ExcelSheetList($oExcel)
_ArrayDisplay($aArray)
_ExcelBookClose($oExcel)
Re: [R] Excel : Pb avec ExcelSheeetList
Posté : jeu. 29 mars 2012 11:31
par ltrautoit
Bonjour,
C'était justement ca le problème que j'aurais souhaité résoudre.
Par curiosité j'aurais bien voulu savoir le pourquoi du comment, ceci dit j'ai trouvé une solution palliative.
Pb Fermé.
Re: [R] Excel : Pb avec ExcelSheeetList
Posté : jeu. 29 mars 2012 14:13
par tioxine
Bonjour,
Il y a un bug dans le plugin Excel
En effet , quand on utilise _ExcelBookAttach , l'objet ramené est $o_Result.Application.Workbooks , soit un Workbook , alors que dans le create, l'objet est juste .Application
Hors, la fct _ExcelSheetList présuppose que l'objet est de type .Application, ce qui est faux si on vient d'un attach ou d'un open
Code : Tout sélectionner
Func _ExcelSheetList($oExcel)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
Local $iTemp = $oExcel.ActiveWorkbook.Sheets.Count
Local $aSheets[$iTemp + 1]
$aSheets[0] = $iTemp
For $xx = 1 To $iTemp
$aSheets[$xx] = $oExcel.ActiveWorkbook.Sheets($xx).Name
Next
Return $aSheets
EndFunc ;==>_ExcelSheetList
Donc, correction du code
Code : Tout sélectionner
Local $iTemp
Local $obj
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
Local $s_Name = String(ObjName($oExcel))
If ($s_Name <> "_Workbook") Then
$obj = $oExcel.ActiveWorkbook
Else
$obj = $oExcel
EndIf
$iTemp = $obj.Sheets.Count
Local $aSheets[$iTemp + 1]
$aSheets[0] = $iTemp
For $xx = 1 To $iTemp
$aSheets[$xx] = $obj.Sheets($xx).Name
Next
Return $aSheets
A+