none
Problème exécution de mon application windows RRS feed

  • Question

  • Bonjour

    J'ai créé via visual studio community 2015 une application windows ouvrant un fichier excel contenant des données nécessaires à mon application windows.
    Quand j'exécute mon application sur Windows 7 sur le poste de développement pas de souci. chez mon client en Windows 10 on a le message suivant 

    System.Runtime.InteropServices.COMException (0x800A03EC): Exception de HRESULT : 0x800A03EC
       à Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
       à BoosterProd.Form_Demarrage.Form_Demarrage_Load(Object sender, EventArgs e)

    Mon code est très simple.

    Le voici

            'Procédure de chargement de l'application
            Me.Visible = False
            '--> Mise à jour de la liste des fichiers  et mise en premier du plus récents
            Dim Chemin As String = "C:\BoosterProd\Files"
            Dim sFiles() As String
            Dim nbfiles As Integer
            Dim i As Integer
            status_Init = True
            sFiles = Directory.GetFiles(Chemin)
            nbfiles = Directory.GetFiles(Chemin).Length()
            For i = 0 To nbfiles - 1
                Dim pathfile As String = sFiles(i)
                Dim NomFichier As String = pathfile.Remove(0, InStrRev(pathfile, "\", -1))
                If InStr(NomFichier, "Booster") > 0 Then
                    Dim x As Integer = NomFichier.Length - 4
                    Dim fichier As String = NomFichier.Remove(4, x)
                    Cbox_ListeFiles.Items.Add(fichier)
                End If
            Next
            '--> tri de la combobox
            Cbox_ListeFiles.Sorted = True
            Cbox_ListeFiles.SelectedIndex = Cbox_ListeFiles.Items.Count - 1
            'Gestion des menus en fonction de la langue
            'Module permettant de mettre les libellés à la langue de l'utilsateur et sa monnaie
            '--> ouverture un premier fichier pour récupérer la langue pour toutes les zones des formulaires de l'application
            Dim appExcel As New Microsoft.Office.Interop.Excel.Application 'Application Excel
            appExcel = CreateObject("Excel.Application")
            Dim wbExcel As _Workbook
            Dim wsExcel As _Worksheet
            'Ouverture de l'application
            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.Open("C:\BoosterProd\files\" & Cbox_ListeFiles.Text & "_BoosterProd.xlsx")
            'wsExcel correspond à la première feuille du fichier
            wsExcel = wbExcel.Worksheets("Parametre")
            '--> Traduction du formulaire Form_Demarrage
            Dim ToolTip_Sortie = New System.Windows.Forms.ToolTip()
            ToolTip_Sortie.SetToolTip(Me.PBox_Sortie, wsExcel.cells(2, 3).value)
            Dim ToolTip_Go = New System.Windows.Forms.ToolTip()
            ToolTip_Go.SetToolTip(Me.PBox_Go, wsExcel.cells(3, 3).value)
            Dim ToolTip_SelectLicence = New System.Windows.Forms.ToolTip()
            ToolTip_SelectLicence.SetToolTip(Me.Cbox_ListeFiles, wsExcel.cells(4, 3).value)
            '--> Traduction du formulaire Form_Demarrage
            '--> récupération du logo
            If wsExcel.cells(2, 10).value = "Oui" Then
                Me.Img_Logo_Meletys.Visible = True
            Else
                Me.Img_Logo_Meletys.Visible = False
            End If
            If wsExcel.cells(3, 10).value = "Oui" Then
                Me.Pbox_Logo_Amag.Visible = True
            Else
                Me.Pbox_Logo_Amag.Visible = False
            End If
            wbExcel.close()
            appExcel.quit()
            'Tuer le processus Excel
            Dim myProcesses As Process() = Process.GetProcessesByName("Excel")
            Dim myProcess As Process
            For Each myProcess In myProcesses
                myProcess.Kill()
            Next myProcess
            Me.Show()
            Me.Visible = True

    Merci de me m'aider je cherche depuis des jours et des jours

    Bien à vous

    jeudi 4 mai 2017 05:33

Réponses

  • Est-ce que le poste WIN10 de votre client a Excel installé, et dans la même version que celle du poste de développement en Win7 ?


    Le code fait du late binding, il me semble que

    CreateObject("Excel.Application")

    retourne un Object alors que vous avez défini

    Dim appExcel As New Microsoft.Office.Interop.Excel.Application 'Application Excel
    ce qui annule le late binding il me semble.... et dans ce cas il faut avoir faire l'Imports...

    il faudrait plutôt faire:

    Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object

    xlApp = CreateObject("Excel.Application") ' Late bind l'instance de Excel workbook. xlBook = xlApp.Workbooks.Open(Application.StartupPath & "\" & Fichier) ' Late bind l'instance de Excel worksheet. xlSheet = xlBook.Worksheets(1) xlSheet.Activate() ' Montre l'application (ou non si False) xlSheet.Application.Visible = True




    jeudi 4 mai 2017 11:40