2010-04-17 9 views
0

Je souhaite extraire des données "spéciales" d'un classeur Excel 2002 (exigence du client, ne peut pas changer) et des feuilles de calcul qui y sont contenues. J'ai classé les plages dans cette catégorie de données "spéciale". Je voudrais acquérir une liste de toutes les plages dans, idéalement, toutes les feuilles de calcul dans un classeur. Les attributs qui m'intéressent sont le nom de la plage et l'adresse de la plage. Je googling depuis un certain temps maintenant, et n'ai rien trouvé de pertinent.Est-il possible de renvoyer une liste de toutes les plages de toutes les feuilles de calcul dans un classeur Excel 2002?

Je supposais que l'API Excel 2002 exposerait quelque chose comme ceci:

ApplicationClass app = new ApplicationClass(); 
Workbook workbook = app.Workbooks.Open(@"c:\file.xls", ...); 
Worksheet worksheet = workbook.Worksheets["sheet1"] as Worksheet; 
Range[] ranges = worksheet.GetAllRanges(); 

ou quelque chose de similaire. Cependant, je me trompe tristement.

Est-ce possible avec Excel 2002?

Répondre

0

Si vous recherchez toutes les plages qui sont nommées, vous devriez regarder la collection Workbook.Names. Chaque nom de la collection Names a une propriété RefersTo qui donne la référence de formule ou de plage référencée par le nom. (Mais il faut savoir qu'un nom peut être une formule plutôt que d'une plage de référence)
Dim Nom comme ONM

pour chaque ONM dans ActiveWorkbook.Names
Debug.Print oNM.Refersto
suivant ONM