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

Macros et VBA Excel Discussion :

Fermer excel DEJA OUVERT


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut Fermer excel DEJA OUVERT
    Bonjour

    Je désire fermer un excel déjà ouvert (par un autre process)
    Voici le code script (à corriger) ou à faire en VBA ?

    Le problème réside dans l'affectatin de l'objet à fermer ...
    On ne peut pas utiliser laprop ActiveWorkbook ...

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    objExcel.DisplayAlerts = False
    'Mise en commentaire ouverture car déjà ouvert
     'objExcel.Workbooks.Open("H:\memoriaux\SIRE\BOTIT\Benchmark\NewBench\Process Request Bloomberg.xls")
     
    '----->  Affectation de l'objet à fermer 
    objExcel.Workbooks.ActiveWorkbook("H:\memoriaux\SIRE\BOTIT\Benchmark\NewBench\Process Request Bloomberg.xls")
    objExcel.Visible = True
    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close(0)
    objExcel.Quit

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour

    Si je n'ai pas mal compris la question, tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim oWbk As Excel.Workbook
     
    'instanciation du classeur déjà ouvert
    Set oWbk = GetObject("H:\memoriaux\SIRE\BOTIT\Benchmark\NewBench\Process Request Bloomberg.xls")
     
    '...
     
    'fermeture classeur
    oWbk.Close True
    'fermeture application
    oWbk.Application.Quit
     
    Set oWbk = Nothing
    Cordialement,

    PGZ

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Bonjour

    Merci ... le classeur se ferme mais :
    1. les événements codés dans le Auto_close ne s'exécutent pas
    PS ils sont codées dans dans le Module 1, sub auto close

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub auto_close()
    Call CopyValue
    Call ExportValue
    Application.DisplayAlerts = False
    Application.Quit
    'MsgBox "fermé"
    End Sub
    Que dois-je faire pour qu'ils s'exécutent lors de la fermeture du classeur déclenchée par par l'autre code

    2. Petit problème collatéral (moins important) mais j'aimerais trouver

    Si j'exécute le code alors que le fichier n'est pas ouvert, à l'ouverture suivante il n'est plus visible et il faut faire "Windows" "Unhide" systématiquement

    voici le code

    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
    Public Sub CloseXLSProcessRequestBloomberg()
    MsgBox ("begin")
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    objExcel.DisplayAlerts = False
    objExcel.Visible = True
              Dim oWbk As Excel.Workbook
              'instanciation du classeur déjà ouvertDim
              Set oWbk = GetObject("H:\memoriaux\SIRE\BOTIT\Benchmark\NewBench\Process Request Bloomberg.xls")
              'fermeture classeur
              oWbk.Close True
              Set oWbk = Nothing
    'fermeture application
    objExcel.Application.Quit
    'oWbk.Application.Quit
    MsgBox ("end")
    End Sub

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Que dois-je faire pour qu'ils s'exécutent lors de la fermeture du classeur déclenchée par par l'autre code
    c'est normal, auto Open ou close étaient censés disparaître ou n'être maintenus que par soucis de compatibilité, leur avantage ou inconvénient, selon le contexte, est qu'ils ne réagissent justement pas au code VBA.
    Solution passer les commandes dans l'évènementiel Before Close du Workbook en faisant attention à la portabilité si besoin si versions avant 2000 je crois..

    cordialement,

    Didier

Discussions similaires

  1. VB Script : Comment fermer un worbook excel DEJA ouvert ?
    Par crassetph dans le forum VBScript
    Réponses: 0
    Dernier message: 24/09/2010, 17h43
  2. Réponses: 2
    Dernier message: 17/08/2009, 19h59
  3. Ecrire ds un fichier excel DEJA ouvert
    Par Teddy7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/01/2009, 12h45
  4. Lire fichier Excel deja ouvert.
    Par ketthos dans le forum C#
    Réponses: 2
    Dernier message: 28/05/2007, 00h59
  5. [VB6] Savoir depuis VB, si un document Excel est ouvert
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/11/2002, 08h16

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