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 :

Problème ouverture feuille Excel (instance existante) [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Problème ouverture feuille Excel (instance existante)
    Bonjour,
    J'ai regardé un bon nombre d'exemples sur le Net et je ne comprends pas pourquoi mon code ne fonctionne pas en ouverture d'un fichier Excel existant (ouvert ou pas).
    L'exception est alors: System.Runtime.InteropServices.COMException: 'Excel cannot open the file 'Book1.xlsm' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.'. Le fichier concerné peut être ouvert sans problème par Excel.

    Si je remplace Open(...) par Add() le code fonctionne pourtant.
    Je ne sais pas si tous ces "Imports" sont nécessaires.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Imports Excel = Microsoft.Office.Interop.Excel
    Imports System.Runtime.InteropServices
    Imports System.IO
    Imports System
    Imports System.Diagnostics
    Imports System.ComponentModel
     
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim xlApp As Excel.Application
            Dim xlWorkBook As Excel.Workbook
            Dim xlWorkSheet As Excel.Worksheet
            Dim sDT As String
            Dim today As Date = Now()
            sDT = CStr(today)
            xlApp = CType(GetObject(, "Excel.Application"), Excel.Application)
            If sDT <> "" And FileName.text <> "" Then
                xlWorkBook = xlApp.Workbooks.Open(FileName.Text) ' FileName is set by a OpenFileDialog control
                xlWorkSheet = xlWorkBook.Worksheets(1)
                xlApp.Visible = True
                xlWorkSheet.Range("A1").Value = "dummy value"
                xlWorkBook.SaveAs(FileName.Text + " " + sDT)
                xlWorkBook.Close()
            End If
            xlApp.Quit()
        End Sub
    Merci par avance pour votre aide.

  2. #2
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Montre nous comment tu gères ta variable FileName.

  3. #3
    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
    Merci. Je ne pense toutefois pas que FileName puisse poser problème ?
    Dans le projet VB.NET j'ai un contrôle OpenFileDialog et un TextBox qui s'appelle FileName.


    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
    17
    18
    19
    20
    21
    22
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.OpenFileDialog1.FileName = Nothing
            If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                FileName.Text = Me.OpenFileDialog1.FileName
            End If
            Dim fo As Boolean
            fo = isFileOpen(FileName.Text)
            If fo Then
                MessageBox.Show("File is already open !")
            Else
                MessageBox.Show("Good to go !!!")
            End If
        End Sub
    Function IsFileOpen(ByRef sName As String) As Boolean
            Dim fs As FileStream
            Try
                fs = File.Open(sName, FileMode.Open, FileAccess.Read, FileShare.None)
                IsFileOpen = False
            Catch ex As Exception
                IsFileOpen = True
            End Try
     End Function

  4. #4
    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
    OK, il faut donc croire que ton FileName contient bien le nom de ton documents XLS avec son chemin complet.
    A partir de là, je trouve ton code un peu chargé.
    Voici (en espérant que cela t'aide) comment je peux accéder aux cellules de ma feuille de calcul, comment je peux y lancer une macro XLS, ...

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    ' OK pour tes imports :-)
     
    ' ensuite j'ai ceci :
     
    Public Class FMonForm
        Dim XLSAPP As Excel.Application
    ' ............
     
    ' et ensuite dans une procédure, sur le clic d'un bouton BExcel :
     
        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\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
            XLSAPP.ActiveCell.FormulaR1C1 = "127"   'y placer la valeur 127
     
            ' Il est aussi possible de lancer une macro du fichier XLS
            XLSAPP.Run("MaMacro") 'exécuter la macro MaMacro
     
     
            XLSAPP.ActiveWorkbook.Save() 'une sauvegarde
            XLSAPP.ActiveWorkbook.Close() 'fermer Excel, sinon Excel sera fermé à la fermeture de cette applcatioin VB.Net
        End Sub

  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
    Merci pour ton aide. Mon code est certes chargé car je fais pas mal d'essais tous aussi infructueux.
    Si je comprends bien le tien, tu lances une nouvelle instance d'Excel.
    J'ai donc fait un copié-collé de ton code et j'ai la même erreur (le fichier xlsx existe pourtant).
    il instancie bien un nouvel Excel, mais m'envoie toujours: System.Runtime.InteropServices.COMException: 'Excel cannot open the file 'Book1.xlsm' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.'

    Par ailleurs je préfererais vraiment utiliser capturer une instance existante, récupérer un handle et agir sur la feuille Excel...
    Ça n'a pas l'air simple !

  6. #6
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Salut,

    j'ai essayé ton code et j'ai obtenu dans un premier temps la même erreur que toi.

    j'ai juste fait une modif:
    j'ai mis juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlWorkBook = xlApp.Workbooks.Open(...)
    et cela a fonctionné.

    il y a quand même des lignes dans ton code qui m'interpellent comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp = CType(GetObject(, "Excel.Application"), Excel.Application)
    PS : j'ai simplifié ton code pour faire les tests mais j'ai conservé ta philosophie. je peux t'envoyer mon code si besoin

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

Discussions similaires

  1. Probléme ouverture fichier excel créé avec Jasperreport
    Par abderahime_13 dans le forum Jasper
    Réponses: 0
    Dernier message: 06/05/2010, 10h48
  2. [XL-2003] ouverture feuille excel à partir d'un userform
    Par mdambreville dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/05/2009, 17h55
  3. Problème rafraichissement feuille excel
    Par xav30 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/12/2007, 16h58
  4. Problème ouverture fichier excel
    Par modaffar dans le forum VB.NET
    Réponses: 10
    Dernier message: 05/07/2007, 09h20
  5. [VBA EXCEL]Ouverture feuille excel dans fenêtre maximale
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2007, 17h51

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