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 :

liaison avec Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Par défaut liaison avec Excel
    j'ai cree une liaison avec Excel, j'arrive a recuperer les donnees mais le procesu continu de tourner meme apres ca destruction
    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    'declaration
    Dim xlApp As Microsoft.Office.Interop.Excel.Application
     
    'instanciation
    xlApp = CType(CreateObject("Excel.Application"), _ Microsoft.Office.Interop.Excel.Application)
     
    'destruction?
    xlApp.Quit()
    xlApp = Nothing
    Excel n'apparait plus mais le processus reste actif...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2008
    Messages : 161
    Par défaut
    Je ne comprend pas trop bien ton problème. Détail un peu plus. Et si possible donne ton code complet pour qu'on puisse y voir clair

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Peut etre

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Plusieurs solutions à ton problème dans ce post : [VB.NET][C#] Automatisation Excel : Fermer le processus Excel récalcitrant

  5. #5
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 57
    Par défaut
    skalp: je n'arrive pas a voir ton liens un pb de permission?

    j'ai mis tout le code. je ne fais rien d'autre entre les lignes(pour le test bien sur), Excel ce ferme bien.
    If IsNothing(xlApp) revoie bien true. mais le processus EXCEL reste dans la liste des processus windows.

  6. #6
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par fernier Voir le message
    skalp: je n'arrive pas a voir ton liens un pb de permission?
    Normal c'est une section private et skalp à dû l'oublier
    Voici le code qui doit t'interesser :
    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
    29
    30
    31
    32
    33
    34
    35
    Private Sub CreateExcelProcess()
     
                ' Liste des processus avant le mien
                Dim Process1() As Process = Process.GetProcesses()
                _xlApp = New Microsoft.Office.Interop.Excel.Application()
     
                ' Liste des processus après le mien : la différence me donnera l'Id du mien
                Dim Process2() As Process = Process.GetProcesses()
     
     
                Dim i, j As Integer
                Dim bMonProcessXL As Boolean
                For j = 0 To Process2.GetUpperBound(0)
                    If Process2(j).ProcessName = "EXCEL" Then
                        bMonProcessXL = True
                        ' Parcours des processus avant le mien
                        For i = 0 To Process1.GetUpperBound(0)
                            If Process1(i).ProcessName = "EXCEL" Then
                                If Process2(j).Id = Process1(i).Id Then
                                    ' S'il existait avant, ce n'�tait pas le mien
                                    bMonProcessXL = False
                                    Exit For
                                End If
                            End If
                        Next i
                        If bMonProcessXL = True Then
                            ' Maintenant que j'ai son Id, je pourrai le tuer
                            '  xlApp.Hinstance ne fonctionne pas avec Excel 2000
                            '  alors que cette méthode marche toujours !
                            ProcId = Process2(j).Id
                            Exit For
                        End If
                    End If
                Next j
            End Sub
    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
    29
    30
    31
    32
    33
    34
    35
     
    Public Sub Close()
                Try
                    If Not _xlSheet Is Nothing Then
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(_xlSheet)
                        _xlSheet = Nothing
                    End If
     
                    If Not _xlBook Is Nothing Then
                        _xlBook.Close()
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(_xlBook)
                        _xlBook = Nothing
                    End If
     
                    If Not _xlApp Is Nothing Then
                        _xlApp.Quit()
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(_xlApp)
                        _xlApp = Nothing
                        Quitter()
                    End If
                Catch ex As Exception
                    TraceNLog(ex)
                End Try
            End Sub
     
            Public Sub Quitter()
                Try
                    If ProcId = 0 Then
                        Exit Sub
                    End If
                    Process.GetProcessById(ProcId).Kill()
                Catch ex As Exception
                    TraceNLog(ex)
                End Try
            End Sub

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

Discussions similaires

  1. [AC-2013] Liaison avec Excel - requête invisible
    Par amrod93 dans le forum Access
    Réponses: 0
    Dernier message: 03/10/2013, 17h04
  2. [PPT-2010] Modification d'une liaison avec Excel 2010
    Par Daejung dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 28/03/2012, 10h08
  3. Liaison avec Excel
    Par Ledaf dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/03/2009, 00h08
  4. Réponses: 2
    Dernier message: 13/12/2006, 13h33
  5. Comment créer un lien hypertexte avec une liaison OLE Excel ?
    Par vieuxsinge dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 08/12/2005, 17h16

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