IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Impossible d'effectuer un cast d'un objet COM


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut Impossible d'effectuer un cast d'un objet COM
    Bonjour à tous, j'ai l'erreur suivante en voulant avec vb.net sous visual studio 2022, lire des données excel 2010.

    "System.InvalidCastException*: 'Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Excel.WorksheetClass' en type d'interface 'Microsoft.Office.Interop.Excel._Worksheet'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{000208D8-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante*: Cette interface n’est pas prise en charge (Exception de HRESULT : 0x80004002 (E_NOINTERFACE)).'"

    Voiçi le code des procédures :

    le code du module avec les variables globales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Excel
    Module Module1
            Public DateJour As Date
            Public DateMax As Date
            Public oApp As New Excel.Application
            Public oWkb = oApp.Workbooks.Add
            Public oWSht As New Excel.Worksheet 'feuille de calcul
            Public chemin As String = "C:\Users\Documents\Excel\Pass.xlsx"
            Public onglet As String = "Utilisés"
            Public lRow As Long 
        End Module

    Le code du formulaire avec un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Imports Microsoft.Office.Interop.Excel
     
    Public Class Form1
        'Implements Worksheet
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            oWkb = oApp.Workbooks.Open(chemin)
            With oWSht
                lRow = .Cells(.Rows.Count, "A")
            End With
        End Sub
    End Class
    l'erreur est sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lRow = .Cells(.Rows.Count, "A")
    J'ai regardé sur diverses discussions à ce sujet j'ai donc réparé puis désinstallé et re installé MS Office 2010 en vain.
    A noter la solution est sous Framework .NET Framework 4.8 et sur une Windows Forms
    Si quelqu'un a une idée...

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    sauf erreur, la feuille est déclarée mais pas initialisée.
    Le code suivant apporte-il quelque chose ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            Module1.oWkb = Module1.oApp.Workbooks.Open(chemin)
            Module1.oWSht = Module1.oWkb.Sheets(onglet)
            With oWSht
            ...........

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 899
    Par défaut
    Merci pour l'info en effet ça m'a bien aidé voiçi le code exact :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    pour ajouter l'interface Sheets
    oWkb = oApp.Sheets.Add
    oWkb = oApp.Workbooks.Open(chemin)
    et comme tu m'as dis pour initialiser cette interface
    oWSht = oWkb.Sheets(onglet)
    With oWSht
    Pour compter le nombre de lignes dans la colonne A(me sert pas ici mais m'a servi pour faire la suite :)
    lRow = CLng(.Rows.Count)
     
    Pour compter le nbmbre de lignes occupées dans la colonne A
    lRow = .Range("A" & .Rows.Count).End(Excel.XlDirection.xlUp).Row
    Voilà grand merci à +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject'
    Par essence-ciel dans le forum Bases de données
    Réponses: 7
    Dernier message: 29/12/2020, 07h40
  2. Impossible d'effectuer un cast d'un objet COM
    Par lazerbo dans le forum Développement Windows
    Réponses: 1
    Dernier message: 27/07/2016, 10h13
  3. Réponses: 21
    Dernier message: 16/09/2013, 22h00
  4. Réponses: 0
    Dernier message: 13/03/2010, 10h25
  5. Réponses: 2
    Dernier message: 06/03/2007, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo