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 :

Message d'erreur sur ouverture Workbook Excel


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut Message d'erreur sur ouverture Workbook Excel
    Bonjour tout le monde,

    J'aimerai un peu d'aide quant à un message d'erreur.

    Je souhaite utiliser un fichier excel pour le modifier via VB.NET. À cette fin, j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim APP As New Microsoft.Office.Interop.Excel.Application
                Dim workbook As Microsoft.Office.Interop.Excel.Workbook
                Dim worksheet As Microsoft.Office.Interop.Excel.Worksheet
     
                workbook = APP.workbook.Open(Principal.txt_source.Text)
     
                worksheet = workbook.Worksheets(0)
    En ayant bien pensé au 'Imports Microsoftt.Office.Interop.Excel', avec l'ajout de référence qui va bien.


    Seulement, j'ai l'erreur suivante à la ligne "workbook = APP.workbooks.Open()" :

    Nom : Erreur_excel.png
Affichages : 387
Taille : 35,9 Ko

    Voyez vous quelque chose qui ne va pas ?

    Merci d'avance pour votre aide.

    Cordialement-

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Voici le code que j'utilise pour accéder à une feuille Excel (QUI N'EST PAS DEJA OUVERTE !!!).
    Compare avec le tien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Imports Excel = Microsoft.Office.Interop.Excel
     
    Public Class FBase
     
        Dim WithEvents XLSAPP As Excel.Application = Nothing  'Seulement si on veut suivre certains événement générés par Excel
        ' Dim XLSAPP As Excel.Application = Nothing
     
        'La feuille Excel n'est pas ouverte
        Private Sub BExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BExcel.Click
            XLSAPP = New Excel.Application
            XLSAPP.Visible = True
            XLSAPP.Workbooks.Open("D:\Tmp\ProbExcel\Test.xls")  'ouvir le fichier XLS
     
            ' Il est possible de programmer en VB ce qu'on ferait en Macro
            XLSAPP.Range("C4").Select()                 'sélectionner une cellule
    ...

  3. #3
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut
    Merci Phil Rob,

    En m'inspirant de ton code j'ai pu écrire celui-ci qui fonctionne nickel !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Dim excelApp As Application
                Dim wb As _Workbook
                Dim ws As _Worksheet
     
                'Rechercher les codes PSV à supprimer dans le fichier source et les supprimer
                excelApp = New Application
                excelApp.Visible = False
                excelApp.ScreenUpdating = False
     
                wb = excelApp.Workbooks.Open(Principal.txt_source.Text)
                ws = wb.Worksheets(1)
    En revanche après mes modifications, que dois-je mettre si je veux sauvegarder le fichier utilisé, mais sans qu'il y ait une demande de confirmation, puisqu'il doit être écrasé ?

    Et pour le fermer le processus EXCEl dans le gestionnaire des tâches, un "excelApp.quit()" semble ne pas suffire. Tu aurais une idée ?

    Merci encore

    Cordialement-

  4. #4
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut
    Pour fermer EXCEL.exe qui traine toujours dans le Gestionnaire de tâches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
         excelApp.Quit()
     
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ws)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(wb)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
     
                    excelApp = Nothing 'Instanciait l'application
                    wb = Nothing 'Instanciait le workbook
                    ws = Nothing 'Instanciait le worksheet
     
                    'Utiliation du GarbageCollect
                    GC.Collect()
                    GC.WaitForPendingFinalizers()
                    GC.Collect()
                    GC.WaitForPendingFinalizers()
                    GC.Collect()
    Voilà, si ça peut en aider d'autres.

    Cordialement-

  5. #5
    Membre confirmé
    Homme Profil pro
    Trader / Formateur / Développeur Options CBOE
    Inscrit en
    Septembre 2018
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Trader / Formateur / Développeur Options CBOE
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2018
    Messages : 86
    Par défaut
    Bonsoir
    Shennong, y a t-il une raison pour invoquer le Garbage Collector plusieurs fois ?
    Aussi, est il nécessaire pour les objets WB et WS ou est-ce que c'est suffisant au niveau de l'appli qui est l'objet COM a priori ?
    Merci d'avance
    Bruno

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

Discussions similaires

  1. [AC-2007] Message d'erreur sur ouverture formulaire
    Par Malick dans le forum IHM
    Réponses: 4
    Dernier message: 02/02/2014, 21h52
  2. [AC-2010] Message d'erreur sur ouverture formulaire
    Par valoche160 dans le forum Access
    Réponses: 1
    Dernier message: 31/08/2013, 05h19
  3. message d'erreur sur ouverture d'etat
    Par jph86 dans le forum IHM
    Réponses: 3
    Dernier message: 11/01/2010, 20h00
  4. Message d'erreur sur ouverture d'état/requête
    Par guiguilive dans le forum Access
    Réponses: 1
    Dernier message: 30/05/2007, 11h36
  5. Message d'erreur sur ouverture module de BDD
    Par zakiabdess dans le forum Bases de données
    Réponses: 8
    Dernier message: 12/02/2007, 21h50

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