jerlo11
Messages postés109Date d'inscriptionmardi 19 mai 2015StatutMembreDernière intervention17 novembre 2022
-
Modifié le 1 mars 2022 à 14:51
Jerlo11 -
14 févr. 2022 à 08:55
Bonjour,
J'ai créé une petite appli qui récupère des cellules Excel pour les importés dans des Textbox pour l'utilisateur, cela fonctionne très bien sur mon PC ou j'ai développé le programme mais sur d'autre PC l'import ne marche pas. (même version Office installé, même Framework entre les 2 machines etc...
Dans mon projet j'ai ajouté la référence -> COM -> Microsoft excel 16 object library
En lancant mon projet .sln sur le PC ou cela ne fonctionne pas, à priori le problème vient de la référence manquante :
Imports Microsoft.Office.Interop
lié au fameux : microsoft excel 16 object library ??
Que faut-il faire pour que mon programme fonctionne correctement sur d'autre PC ? faut-il installé quelque choses vis à vis de cette library car je ne comprend pas
La copie local de la réf Microsoft.Office.Interop.Excel est vérouillé à False.
Est-ce qu'il me manque en dure le fichier dll : Microsoft.Office.Interop.Excel.dll à la source de mon exe ?
Toute aide sera appréciée
Mon bout de code pour l'import de data :
Imports System
Imports Microsoft.Office.Interop
Dim ExcelApp As Excel.Application = New Microsoft.Office.Interop.Excel.Application()
Dim ReteilerWorkbook As Excel.WorkbookExcelApp.Workbooks.Open(Lbl_target_excel_cartouche.Text)
'Récupe Nom Client
Txt_nom_client.Text = ReteilerWorkbook.Sheets(1).Cells(8, 4).Text
Lbl_juste_nom.Text = ReteilerWorkbook.Sheets(2).Cells(6, 4).Text
'Adresse Client
Txt_adresse_client.Text = ReteilerWorkbook.Sheets(2).Cells(7, 4).Text
'Réf dossier
Txt_ref_dossier.Text = ReteilerWorkbook.Sheets(2).Cells(5, 4).Text
' etc........
Whismeril
Messages postés18281Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 mars 2023621 13 févr. 2022 à 00:39
Bonsoir
Le problème avec l’API Excel, c’est qu’il faut exactement la même sur les PC cible.
Et malheureusement malheureusement avoir le même millésime peut ne pas être suffisant. x86 et x64 peuvent avoir une influence. Les mises à jour aussi.
Une solution est effectivement de mettre la dll avec laquelle tu compiles dans le dossier de l’exe, et bien sûr que la référence de ton projet soit cette dll et pas celle par défaut du système.
Mais, j’ai rencontré un cas (ancien je te l’accorde mais…) en écriture, où le fichier était généré, mais quand je voulais l’ouvrir sur le PC ça m’indiquait une incompatibilité de fichier alors que si je le copiais sur le PC de développement il s’ouvrait sans problème.
C’est ce jour là que j’ai définitivement abandonné l’API Microsoft.
Voir cette discussion récente pour les autres façons possibles de faire
dysorthographie
Messages postés64Date d'inscriptionjeudi 27 janvier 2022StatutMembreDernière intervention11 mars 20234 Modifié le 1 mars 2022 à 14:52
Bonjour,
tu peux en créer tes propre méthode CreateObject pour avoir accès à la version installé sur la machine sans te soucier de la version!
Imports System.Runtime.InteropServices
Sub test()
Dim ExcelApp As Object=CreateObject("Excel.Application")
Dim ReteilerWorkbook As Object= ExcelApp.Workbooks.Open(Lbl_target_excel_cartouche.Text)
End Sub
Public Function CreateObject(ByVal app As String) As Object
Dim OBJType As Type = Type.GetTypeFromProgID(app)
Dim OBJ As Object = Activator.CreateInstance(OBJType)
Return OBJ
End Function
Public Function GetObject(ByVal App As String) As Object
Return CType(Marshal.GetActiveObject(App), Object)
End Function
jerlo11
Messages postés109Date d'inscriptionmardi 19 mai 2015StatutMembreDernière intervention17 novembre 2022 13 févr. 2022 à 13:03
Alors hier soir j'ai trouvé et téléchargé une dll : Microsoft.Office.Interop.Excel.dll
J'ai supprimé la réf dans mon projet pour aller importer cette dll, je compile, je test, pas de soucis sur mon PC, donc tout comptant je démarre l'autre PC pour réaliser des tests et pareil :( même problème les imports ne passent pas le fichier dll est la version 16.0.11929.20048
Quand tu précises qu'il ne faut pas que se soit celle par défaut mais bien la dll on est d'accord que via "Parcourir" tu va la cibler ?
Franchement je désespère avec cette API
Merci pour les pistes en tout cas
Vous n’avez pas trouvé la réponse que vous recherchez ?