Faire fonctionner un exe conçu en VB6 et excel2003 sur platform WindowsNT avec e
flamalex
Messages postés29Date d'inscriptionjeudi 9 novembre 2000StatutMembreDernière intervention21 avril 2005
-
10 mars 2005 à 18:29
flamalex
Messages postés29Date d'inscriptionjeudi 9 novembre 2000StatutMembreDernière intervention21 avril 2005
-
16 mars 2005 à 07:02
CONTEXT:
J'ai réalisé avec l'aide de ce forum une application en VB6 qui lors de son execution ouvre une form, a partir de la , j'ai des fonctions qui me permettent d'ouvrir et de créer des fichiers excel.
j'ai créé cette application a partir d'une platform Windows Xp Pro, VB6, et excel 2003.
cette exe fonctionne tres bien chez moi et chez des amis qui ont WinXP pro et excel2003, sauf kils doivent installer les deux DLL qui vont avec, jusque la normal.
FAITS:
j'ai un probleme, lorsque j'execute mon programme sur une platform
windows NT, avec excel2000, l'exe se lance pas de probleme, mais lorsque ma form s'ouvre et que je clic sur ouvrir un xls ou créer un xls, c'est la que ca plante
il me fait "erreur programme, cette application va etre arretée, pour defaillance....un truc du genre"...
remarque: kan ce dernier plante, il se ferme, mais dans les processus, "EXCEL.EXE" reste actif, du coup apres pas moyen de demarrer excel.
sauf si biensur je fais terminer le processus (pokoi plant il a cette endroit la?
precision: sur cette derniere platform NT, j'ai egalement install les 2 DLL ds
'winNT/system32/'
Question: que puis je faire pour que cela fonctionne aussi bien sur XP que sur NT?
Merci a vous
A voir également:
Faire fonctionner un exe conçu en VB6 et excel2003 sur platform WindowsNT avec e
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 10 mars 2005 à 19:44
Je ne pense pas que ce soit l'OS qui est en cause mais plutôt la version d'Excel installée.
Excel 2003 peut charger un classeur Excel 2000 mais pas l'inverse. Compatibilité ascendante uniquement avec les produits Microsoft.
flamalex
Messages postés29Date d'inscriptionjeudi 9 novembre 2000StatutMembreDernière intervention21 avril 2005 10 mars 2005 à 22:20
j'suis d'accord, mais justement, j'y avais pensé et donc
les fichiers excel, préprogrammé sur ma becane en vb6 et sur excel2003
eh! ben! je les ai essayé sur NT avec excel 2000, mais juste ouvrire les fichiers excel, et en fait ca marche
donc je comprends pas le probleme de transition entre mon application, l'appel excel, et les fichiers excel!
flamalex
Messages postés29Date d'inscriptionjeudi 9 novembre 2000StatutMembreDernière intervention21 avril 2005 15 mars 2005 à 22:30
Dim xlApp As Excel.Application 'permet d'ouvrir l'application exel
Dim xlworkbook As Excel.Workbook 'permet de d'ouvrir un workbooks et de tavailler dessus
Dim strSavename As String 'Variable de type string utilise pour le nom de sauvegarde du fichier xls
Dim Fichier As String 'Variable de type string permettant de stoker le nom du fichier a ouvrir
Dim repertoir As String 'variable de type string permettant de stoker le chemin d'acces
Dim existe As Boolean 'Permet de déteminer si le fichier existe déja
Dim msgRep As Integer 'permet de récupérer la réponse de l'utilisateur
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''API Utile pour lire et écrire dans un fichier ini''''''''''''''''''''''''''''''''''''
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Procédure qui permet d'écrire dans un fichier INI
Public Sub EcritDansFichierIni(section As String, cle As String, _
valeur As String, Fichier As String)
WritePrivateProfileString section, cle, valeur, Fichier
End Sub
'Fonction qui permet de lire dans un un fichier ini
Public Function LitDansFichierIni(section As String, cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String
If Fichier = "" Then 'ici il n'y a aucun fichier sélectionné
MsgBox "Vous devez spécifier un fichier à effacer.", vbExclamation, "Erreur de Fichier"
Exit Sub
End If
On Error GoTo Erreur ' initialise le gestionaire d'erreur
If msgRep = vbYes Then
Kill repertoir & "" & Fichier 'ici on efface le fichier
filListBox.Refresh 'et on rafaichit le listbox pour qu'il prennent en compre les modifications
End If
Exit Sub
Erreur: 'En cas d'erreur...
If Err.Number = 70 Then 'le fichier est en cours d'utilisation
MsgBox "Impossible de supprimer le fichier car il est en cours d'utilisation!", _
vbExclamation, "Erreur suppression de fichier"
Else 'ici on tient compte des autres type d'erreur qui auraient pu se produire
MsgBox Error, vbExclamation, "Erreur suppression de fichier"
End If
End Sub
Private Sub cmdNew_Click()
If xlApp.Visible = True Then 'on vérifie si un classeur est déja ouvert
MsgBox "Vous ne pouvez ouvrir plus d'un classeur à la fois.", vbExclamation, "Erreur de Fichier"
Else
Recom: 'Ici on recommence si l'utilisateur à saisie un caractère éronné
strSavename = InputBox(" Entrer le nom de sauvegarde du nouveau fichier." & vbNewLine & _
"Le fichier ne doit pas contenir de <>[]/\*&?$% .", "Nom de sauvegarde")
If strSavename = "" Then Exit Sub 'si l'utilisateur appuie sur cancel ou s'il ne saisit rien on quitte la procédure
If InStr(1, "<>[]/\*&?$%", strSavename) <> 0 Then ' On vérifie s'il n'y a pas de caractère que ne peut pas prendre en compte le prog
MsgBox "Le nom de sauvegarde entrée contien un caractère erronée!", vbExclamation, "Erreur de saisie"
GoTo Recom ' Si oui on demande a l'utilisatieur de recommencer la saisie
End If
Call verif ' On call vérifier pour s'assurer que le nom du fichier n'existe pas déja
Set xlApp = Nothing 'on vide l'objet pour eviter d'avoir des erreurs
Set xlApp = New Excel.Application 'On initialise l'objet
On Error GoTo Erreurcreation 'initialise le gestionnaire d'erreur
xlApp.Workbooks.Open App.Path & "\set.xls" 'On ouvre le fichier d'origine
Set xlworkbook = xlApp.Workbooks(1)
xlworkbook.SaveAs repertoir & "" & strSavename 'On le sauvegarde sous un nouveau nom
xlApp.Visible = True 'on rend visible l'application
Form2.fermer 'on ferme la fenête pop up
filListBox.Refresh 'on rafraichit la listbox pour qu'il prenne en compte les nouveaux changements
End If
End If
Exit Sub
Erreurcreation: 'en cas d'erreur
MsgBox "Une erreur s'est produite lors de la création du fichier: " & _
Fichier & vbNewLine & Error, vbCritical, "Erreur de création du fichier"
Unload Form2
End Sub
Private Sub CmdOuvrie_Click()
If Fichier = "" Then 'ici il n'y a aucun fichier sélectioné
MsgBox "Vous devez spécifier un fichier à ouvrir.", vbExclamation, "Erreur de Fichier"
ElseIf xlApp.Visible = True Then 'On vérifie s'il n'y a pas fichier déja ouvert
MsgBox "Vous ne pouvez ouvrir plus d'un classeur à la fois.", vbExclamation, "Erreur de Fichier"
Else
Form2.lbl1.Caption = "Ouverture du fichier " & Fichier
Form2.Show
Set xlApp = Nothing
Set xlApp = New Excel.Application
MsgBox "Une erreur s'est produite lors de l'ouverture du fichier: " & Fichier & vbNewLine & Error, vbCritical, "Erreur d'ouverture de fichier"
Unload Form2
End Sub
Private Sub cmdQuit_Click()
Unload Me
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 15 mars 2005 à 23:14
Je crois comprendre, dis moi si je me trompe.
Dans ton appli, tu as coché une référence du genre "Microsoft Excel x.x Object library" ?
Si mes souvenirs sont exacts, x.x = 8.0 c'est pour Excel97, 9.0 c'est pour excel2000 et/ou excel2002, 10.0 c'est pour excel 2003.... et tout ça repose sur un fichier du genre Excelxx.olb qui doit se trouver dans le dossier d'install de l'office.
Cherche de ce côté là.