[vb net] ouvrir fichier excel

Fermé
balabonov Messages postés 11 Date d'inscription dimanche 18 juillet 2004 Statut Membre Dernière intervention 29 août 2006 - 4 juil. 2006 à 09:14
 Steve - 19 mars 2012 à 16:08
Bonjour à tous j'ai un problème pour ouvrr un fichier excellen vb.

Option Explicit On
Option Strict On

Imports Microsoft.Office.Interop.Excel.
Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Windows.Forms



Public Class FormMain
    'Fonction ouvrir Fichier
    Private Sub OuvrirFichier()

        'Déclaration des variables
        Dim xlsapp As Excel.Application 'Application Excel
        Dim book As Excel.Workbook 'Classeur Excel

        Try
            'Nouvelle appliation excell
            xlsapp = New Excel.Application
            book = xlsapp.Workbooks.Open("chemin du fichier")
        Catch ex As COMException
            MessageBox.Show(ex.ToString())


        End Try

    End Sub

    'Ouvrir le fichier après click sur Le menu.
    Private Sub Men_Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Men_Ouvrir.Click

        OuvrirFichier()

    End Sub

    'Quitter l'application avec le menu.
    Private Sub Men_Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Men_Quitter.Click

        Me.Close()

    End Sub

End Class


Et j'obtiens cette erreur:
System.Runtime.interopServices.COMExecution (0x80040154):Impossible de créer l'objet COM avec le CLSID '{00024500-0000-0000-C000-000000000046}'en raison de l'erreur suivante : classe non enregistrée

Que dois je faire?

J'utilise: visual studio 2005, j'ai excell 2003. et j'ai rajouté les références excell dans mon projet.
A voir également:

12 réponses

Malinots Messages postés 177 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 26 février 2008 24
22 juin 2007 à 10:44
moi j'ai fai sa et sa marche pour ouvrir une nouvelle page excel:

variables:

Dim excel As New Excel.Application
Dim workbook As Excel.Workbook
Dim worksheet As Excel.Worksheet
Dim r As Excel.Range
Dim firstcell As Excel.Range
Dim lastcell As Excel.Range
Dim rngg As String(,)

penser a ouvrir les librarie


mon prog et comment on ecri dedans:

Private Sub excell()

excel.Visible = True 'la fenêtre excel est visible
workbook = excel.Workbooks.Add(1) 'on ouvre un classeur dans excel
worksheet = workbook.Worksheets(1) 'on ouvre une feuille dans le classeur excel
WriteToExcel(worksheet, 1, 1, "Acquisition temps réel") 'on écrit "acquisition temps réel" à l'intersection de la ligne 1 et la colonne 1
WriteToExcel(worksheet, 2, 1, "Visualiser graphique appuyer sur ctrl+W")
Dim rng As String(,)
ReDim rng(5, 5)

rng(0, 0) = "Date et heure"
'on choisit l'intersection de la ligne 0 et de la colonne 0 pour écrire "date et heure"
rng(0, 3) = "Puissance kW"
'on choisit l'intersection de la ligne 0 et de la colonne 3 pour écrire "puissance W"
rng(0, 4) = "Tension V"
'on choisit l'intersection de la ligne 0 et de la colonne 4 pour écrire "tension V"
rng(0, 5) = "Courant A"
'on choisit l'intersection de la ligne 0 et de la colonne 5 pour écrire "courant A"

WriteToExcel(worksheet, 3, 1, rng)
'on écrit dans la feuille les expressions vu au-dessus en initialisant le curseur à la ligne 3 et la colonne 1

End Sub

si ya un probleme dite le moi
7
Bonjour

Serait il possible de savoir kel librairie doit-on ouvrir pour creer un fichier excel ?
merci pour les info
0
u
0
ce code permet ouvrir une nouvel page moi je veux ouvrir un fichier qui contient un tableau de calcule avec une en tête at merci pour m'aider
0
Utilisateur anonyme
7 déc. 2006 à 22:25
Bonjour,

Je n'ai pas encore fait de vb net, mais mon intuition me dit que :

xlsapp = New Excel.Application

devrait être :

set xlsapp = New Excel.Application

Lupin
2
il ya une erreur tu as inscrit un point après excel: c'ets pour cette raison qu'il n'identifie pas la classe: Imports Microsoft.Office.Interop.Excel.===>Imports Microsoft.Office.Interop.Excel
1
Bonjour,

Pour travailler de manière correcte avec Excel, il faut changer la langue en Anlgais US avant de créer l'objet et de tarvailler avec lui. Sinon vous risquez des problèmes divers avec des messages d'erreurs ne reflétant pas le vrai problème...

ligne à ajouter.
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pourras tu me passer stp la fonction "WriteToExcel" que t'as utilisé dans ton script ??

Merci
1
euh...j'ai le même problème et la même configuration(office 2003 VS 2005). As-tu trouvé la réponse à...notre problème?
0
si on a deux fichiers excel et je veux de prendre les informations de premier fichier et le mettre dans la deuxieme comment ?
merci
0
bjr
svp est q il ya un code vb.net pour ecrire table croisée dynamique dans un fichier excel
0
Salut tout le monde ! j'aimerais savoir comment ouvrir un fichier excel que j'ai déja créer a partir de visual studio 2005 a l'aide d'un bouton "imprimer" et (si possible) comment remplir les champs de ce méme fichier excel a partir des textbox ou d'un datagrid. Merci de bien vouloir me répondre ^_^.


N.B:
-J'utilise microsoft office 2003.
-J'ai importé "imports microsoft.office.interop.excel".
-Je suis débutant en matiére de programmation ... please help me :)
0
comment faire puor chercher un donne ( du excel ) avec visual basic 2008 net
0
Kaname63 Messages postés 6 Date d'inscription mardi 13 septembre 2011 Statut Membre Dernière intervention 20 octobre 2011 2
Modifié par Kaname63 le 20/10/2011 à 09:35
Une petite astuce ; Comme VBA, le langage des macros dans toutes les versions d'Excel est très similaire à VB.net (2005, 2008, 2010), les bases de codage pour piloter Excel sont à votre portée.

Lancer l'enregistrement d'une macro sur Excel et exécuter ce que vous voulez que l'application fasse plus tard (par exemple insérer une valeur dans une cellule)

Stoppez l'enregistrement de la macro puis allez voir le code créé. Vous trouverez des lignes de code très proches de votre langage VB.net. Sauf qu'Excel aura tout enregistrer... Les mouvements dans les fenêtres, les mouvements de la roulette pour se déplacer rapidement dans le classeur...


Après quelques modifications pour épurer le code, vous pouvez presque le copier coller directement sur votre application...


Il y aura quelques erreurs parce que thisworkbook, activesheet, activecell, activechart ne sont pas des classes de vb.net, mais des composants de la DLL Excel. Ainsi si vous avez a un endroit :

dim xlapp as Excel.application
dim xlbook as Excel.workbook

Selon les lignes vous devrez rajouter dans les lignes xlapp. ou xlbook. avant ou à la place de la liste :
thisworkbook => xlapp.activeworkbook
activesheet => xlapp.activesheet
activecell => xlbook.activecell ou xlapp.activecell
activechart => xlbook.activechart ou xlapp.activechart
etc...


Après à partir de ses petits trucs que je viens de vous donner, vous arriverez à aller lire des valeur, écrire des valeurs, changer le titres de graphiques, faire en sorte que la mise en page soit similaire sur plusieurs feuilles,...
Fin bref, beaucoup de choses.


Même à écrire directement des formules à rallonge si vous êtes à l'aise avec VB et Excel. (J'ai personnellement réussi à coder la création de 25 feuilles en liens avec d'autres excel, à calculer à l'aide de RECHERCHEV et de NB.SI imbriqués et de sommes, à copier les valeurs dans une autre feuille avant de supprimer les 25 feuilles et les calculs intermédiaires.)


Sachez aussi que si vos applications (codées en vb.net) devront agir avec des versions d'Office différentes, il vaut mieux faire en sorte que la DLL ajoutée au projet VB.net soit celle de la plus ancienne version d'Excel. (9.0 pour 2000, 11.0 pour 2003, 12.0 pour 2007) Une application avec la version 11.0 de la DLL Excel, ne pourra pas coder de protection compatible avec Excel 2000, donc à l'ouverture, L'application ne pourra même pas ouvrir le classeur.


Redahs : Ce que tu demande est réalisable (partie datagrid vers excel) mais le code derrière est conséquent ; j'ai du le faire et je peux t'affirmer que ce n'est pas en quelques lignes que c'est fait . Il faut ouvrir l'Excel de destination, insérer les titres et les valeurs, cellule par cellule... Pour faire simple Deux boucles Une boucle For pour le titre et deux imbriquées autre boucles For imbriquées pour le remplissage des valeurs. Plus tu as de valeurs à remplir, plus ce sera long...


Houssam-1 : Par codage, c'est réalisable... De plusieurs façon, en faisant le lien entre les deux via Excel, ou en ne copiant que les valeurs entre deux feuilles de deux classeurs... Après dans les deux cas, mon astuce si dessus va te permettre de récupérer la base qui te servira pour ton code. A toi de voir, comment ce que tu veux faire exactement et comment tu veux le faire...


Dans beaucoup de cas, vous aurez deux possibilités de lancer ce que vous voulez pour Excel ;
- en utilisant des macros (attentions aux sécurités) et en pilotant que de loin le déroulement de votre code.
- en pilotant vraiment tout depuis VB.NET

Le hic c'est que parfois le pilotage depuis VB.NET n'est pas possible...
Windows Seven & XP // Office 2000 à 2007 // VB.net 2005 et 2010 // Builder C++
0
Pour lire un document excel :


    'SOURCE : http://forums.devx.com/showthread.php?threadid=155202   
    Private Sub getInfo(ByVal strCheminFichier As String)   
        Dim excelApp As New Microsoft.Office.Interop.Excel.Application   
        Dim excelBook As Microsoft.Office.Interop.Excel.Workbook = excelApp.Workbooks.Add(System.Reflection.Missing.Value)   
        Dim excelSheet As Microsoft.Office.Interop.Excel.Worksheet = Nothing   
        Try   
            excelBook = excelApp.Workbooks.Open(strCheminFichier)   
            ' feuille nommée "Général"   
            excelSheet = excelBook.Worksheets("Général")
            'On vas chercher dans les cellules du document   
            Dim strTexte as String = excelSheet.Cells(1, 2).Value   
        Catch ex As Exception   
            MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, _
                                           MessageBoxIcon.Error)   
        Finally   
            'MAKE SURE TO KILL ALL INSTANCES BEFORE QUITING! if you fail to do this The service (excel.exe) will continue to run   
            NAR(excelSheet)   
            excelBook.Close(False)   
            NAR(excelBook)   
            excelApp.Workbooks.Close()   
            NAR(excelApp.Workbooks)   
            excelApp.Quit()   
            NAR(excelApp)   
            'VERY IMPORTANT   
            GC.Collect()   
        End Try   
    End Sub
0
    Public Sub NAR(ByVal o As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
        Catch ex As Exception
        Finally
            o = Nothing
        End Try
    End Sub
0