Excel Workbooks.open => membre introuvable

Signaler
Messages postés
3
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
14 juin 2010
-
Messages postés
2
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
27 juillet 2010
-
Bonjour,

actuellement je travaille sur un trombinoscope qui doit etre capable de récupérer des données classiques d'un fichier excel (nom, prénom, etc...) et les injecter dans une base mysql. un truc plutot classique donc.

cependant je rencontre un problème lors de l'importation du fichier excel dans le datagridview de mon application. Voici le code :
Dim appExcel As Excel.Application 'Application Excel
            Dim wbExcel As Excel.Workbook 'Classeur Excel
            Dim wsExcel As Excel.Worksheet 'Feuille Excel

            'Ouverture de l'application
            appExcel = CreateObject("Excel.Application")
            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.open("C:\test.xls")
            'wsExcel correspond à la première feuille du fichier
            wsExcel = wbExcel.Worksheets(1)


le problème semble venir de cette ligne :

            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.open("C:\test.xls")


à ce moment la j'ai une exception qui s'affiche dans ma fenetre d'execution :

Une exception de première chance de type 'System.Runtime.InteropServices.COMException' s'est produite dans mscorlib.dll


et l'exception me renvoie "Membre introuvable. (Exception de HRESULT : 0x80020003 (DISP_E_MEMBERNOTFOUND))"

Après recherche sur le net, je n'ai pas trouvé grand chose. J'ai donc procédé à plusieurs vérifications. Au final, je ne comprends pas du tout, la librairie excel est bien dans les références, les déclarations se font sans problèmes, et en regardant des tutoriaux dont j'ai carrément recopié le code, je me retrouve avec la meme erreur.
J'utilise visual studio 2010 ultimate, et office 2007.

Si vous avez une solution, ou une proposition à me faire, je suis preneur, car je ne comprends pas du tout pourquoi Open n'existerait pas comme membre alors que la librairie est présente :x

7 réponses

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Bonjour,

Il te manque des set pour instancier tes objets
Set appExcel = CreateObject("Excel.Application")

Ensuite sûrement qu'il te faudra rendre ton appexcel visible en lui mettant la valeur "TRUE"

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
3
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
14 juin 2010

Coucou et merci de ta réponse.

Le code que j'ai copié contenait effectivement des Set, mais visual studio les a enlevé automatiquement, et en consultant l'aide, j'ai pu constater que ces instructions d'assignation ne sont plus pris en charge.
Je suppose alors que visual studio l'inclut directement, mais si ce n'est pas le cas, alors je suis dans une sacrée impasse :x
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Le code fourni est plutôt valable en vb6..il y a sûrement des adapations à faire en vb.net.

Peut-être préférer l'utilisation de process.start()


L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
3
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
14 juin 2010

Trouvé sur le site de microsoft :

Dans Visual Basic 2005, les propriétés par défaut ne sont pas prises en charge à moins d'accepter des arguments. En raison de cette modification syntaxique, les instructions Let et Set ne sont pas nécessaires pour spécifier ce qu'il faut assigner et elles ne sont pas employées dans les instructions d'assignation. La propriété Text remplace la propriété Caption du contrôle Label


Let est encore un mot réservé dans Visual Basic 2005, bien qu'il ne soit pas utilisé d'un point de vue syntaxique. Cela permet d'éviter la confusion avec ses significations précédentes. Visual Basic 2005 utilise l'instruction Set pour les procédures de propriété qui définissent la valeur d'une propriété.


Donc à priori il le fait bien tout seul, et d'après le tableau des modifications que j'ai pu trouver aussi sur le site de microsoft, ces instructions sont bel et bien devenues inutiles.

Je vais néanmoins essayer ta solution, on va bien voir :)
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

De mémoire regarde mon tuto sur VBF dans la discussion qui suit pour le pilotage sous VB.NET de l'application Excel.

Amicalement,
Us.
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Bonjour,

Testé sous visual studio 2003:

Dim oXL As New Microsoft.Office.Interop.Excel.Application
Dim oBook As Microsoft.Office.Interop.Excel.Workbook
oXL.Workbooks.Open("tonclasseur.xls")
oXL.Visible = True


L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
2
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
27 juillet 2010

Bonjour,
Au début j'avais le même problème mais j'ai utilisé la dernière solution de lolokum et ça marche il suffit d'ajouter Microsoft Excel 12.0 Object Library dans Projet-->Ajouter une référence --> COM -->Microsoft Excel 12.0 Object Library.
Merci LOLOKUM.