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 :

Creation d'une macro dans un fichier Excel depuis Delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par défaut Creation d'une macro dans un fichier Excel depuis Delphi
    Bonjour,

    Je crée depuis Delphi (2007), un fichier Excel (Excel2007) avec les résultats de mon application : multiples pages, tableaux, graphiques.

    Je souhaiterais créer sur une des pages un bouton qui me permette de modifier 2 séries de données sur un graph (ces séries me permettent de définir un gabarit dans lequel doit se trouver mes résultats)

    Pour la création du bouton, c'est bon avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaShape:=MaFeuille.Shapes.AddOLEObject('Forms.CommandButton.1', EmptyParam, EmptyParam,
                                     EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                     10,10, 110,40);
    Avec Par contre, je n'ai pas trouver le moyen de modifier le 'caption' du bouton

    Pour ce qui est de la macro, j'ai trouve l'exemple suivant (ne serait-ce que pour tester) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Module := ExcelApplication.VBE.ActiveVBProject.VBComponents.Add(1);
      Module.CodeModule.InsertLines(1,'Public sub test()');
      Module.CodeModule.InsertLines(2,'ShowMsg("Bonjour")');
      Module.CodeModule.InsertLines(3,'End Sub');
    avec : seulement a ce moment la, j'ai l'erreur suivante :
    'Programmatic access to visual Basic Project is not trusted'

    en cherchant sur le forum, j'ai trouve qu'il fallait activer sous Visual Basic la référence :
    Microsoft Visual Basic for Applications Extensibility x.xx

    J'ai bien cette référence mais je ne peux l'activer que manuellement et pour un fichier a la fois.

    Est-ce qu'il existe un moyen d'activer cette référence a chaque fichier que je crée ? ou existe il un manière détournée de creer un macro dynamiquement et de la lier au bouton crée ?

    Par avance, merci de vos réponses.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Regarde du coté des parametres du centre de sécurité d'Excel dans le menu option. (désolé j'ai pas la version francaise)
    Excel Options > Trust Center > Trust Center Settings... > Check Trust access to the VBA project object model

    vérifie aussi la base de registre pour la clé HKCU\Software\Microsoft\Office\" + oExcel.Application.Version + @"\Excel\Security

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par défaut
    Merci pour l'info ,

    Avec la modification dans le trust center je n'ai plus le problème avec la référence

    Maintenant, j'ai l'erreur suivante qui apparait 'subscript out of range'

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par défaut
    en fait je n'ai plus le problème avec la référence
    mais il n’écris rien dans module1 quand je vais voir sous visual basic

    quelqu'un a-t'il une solution ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Tu arrive a exécuter la macro ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExcelApplication.Run('test');
    Il faut donner un nom aussi a ton module après le add

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Module.Name := 'MonModule1';
    Sinon si ton module existe déja
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VBProj := ExcelApplication.VBE.ActiveVBProject;
    Module := VBProj.VBComponents('Module1');

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par défaut
    en écrivant le code comme je le mettais plus haut, il n'ecrivait rien dans le module mais en mettant la macro dans un Memo et en le passant comme suit, ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Module := ExcelApplication.VBE.ActiveVBProject.VBComponents.Add(1);
      Module.name:='MonModule';
      for I :=0 to Form1.Memo1.Lines.Count-1 do
        begin
              Module.CodeModule.InsertLines(I+1,Form1.Memo1.Lines.Strings[I]);
        end;
      ExcelApplication.Run('MaMacro');
    avec dans le Memo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub MaMacro()
    '
    'MaMacro Macro
    '
    ShowMsg("Bonjour")
    '
    End Sub
    Saurais-tu comment attacher ma macro MaMacro au click de mon bouton et comment changer le nom de ce bouton ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/08/2017, 16h55
  2. [XL-2013] Import d'une macro dans un fichier excel
    Par mr_hodor dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2014, 10h24
  3. Réponses: 4
    Dernier message: 16/07/2013, 12h48
  4. Réponses: 1
    Dernier message: 11/02/2011, 14h14
  5. Réponses: 1
    Dernier message: 08/10/2008, 15h30

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