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

Delphi Discussion :

[OLE Excel] Interdire l'accès à l'instance exécutée [FAQ]


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut [OLE Excel] Interdire l'accès à l'instance exécutée
    Bonjour,

    Je génère un fichier Excel relativement important par automation objects, ce qui prend donc pas mal de temps (beaucoup trop... mais c'est un autre problème); si pendant la génération j'ai la mauvaise idée de vouloir ouvrir un fichier .xls, alors plutôt que de lancer une deuxième fois Excel, je vois apparaitre l'instance utilisée par mon application, supposée être invisible.

    Est-il possible de faire en sorte que celle-ci soit "inatteignable" par l'utilisateur, et que si il désire lancer Excel pendant la génération, un autre processus soit lancé plutôt que de réutiliser celui qui est en train de tourner en mode invisible ?

    Merci.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    L'ouverture d'un fichier excel ce fait par DDE, il s'agit donc de dire à l'instance que tu utilise d'ignorer les requetes DDE.

    ca peut ressembler à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ExcelApplication1.IgnoreRemoteRequests[0]:=TRUE;
    Citation Envoyé par Help VBA Excel
    IgnoreRemoteRequests
    Cette propriété a la valeur True si les requêtes DDE hors programme sont ignorées.Type de données Boolean en lecture-écriture.
    Si on met cette propriété à TRUE, et qu' on essaie d'ouvrir un fichier Excel,
    une autre instance de Excel sera démarré.

    j'espère le tout conforme...(mieux vaut tard que jamais)
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut
    Je me demandais quelle était le rôle de ce [0], mais il a finalement l'air de trop : ExcelApplication.IgnoreRemoteRequests := TRUE; fonctionne très bien tandis qu'avec un index [0] j'obtiens une exception d'opération invalide sur variant.

    C'est exactement ce que je cherchais, merci pour cette réponse efficace

    =>

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut
    Juste une petite précision pour ceux qui seraient intéressés par cette solution : ne pas oublier de remettre la valeur à "false" avant de fermer Excel, sans quoi les requêtes DDE seraient ignorées tout le temps, même lors d'une utilisation "normale" d'Excel (je viens d'avoir le problème).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/05/2012, 22h41
  2. Réponses: 3
    Dernier message: 29/04/2012, 21h26
  3. Réponses: 5
    Dernier message: 03/04/2007, 17h37
  4. Réponses: 1
    Dernier message: 05/09/2005, 19h18
  5. [OLE Excel] Erreur
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 23/03/2003, 18h28

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