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

VBScript Discussion :

Créer une macro Excel en VBScript


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut Créer une macro Excel en VBScript
    Bonjour,

    J'ai un script VBS qui importe des données d'un fichier texte dans une feuille Excel et qui met en forme les données.
    Je souhaite maintenant créer une macro (module) Excel par VBS de façon automatisée. C'est à dire que le script VBS va créer, écrire et lancer une macro écrite en VBA.
    Le début de mon script fonctionne mais j'ai un premier soucis (je pense que ce ne sera pas le seul) qui est le suivant :

    Cette ligne m'embête car elle ouvre un autre classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set fichxl = exl.workbooks.add
     
    'Ajoute un module
    	Set mdle = fichxl.VBProject.VBComponents.Add(1)
    Alors que je voudrais que la macro se crée dans le classeur que je viens d'ouvrir avant. Voici l'ensemble du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Fichier à ouvrir
    	Fichier_XLS = "C:\ControleDisque.xls"
    	Set exl = WScript.CreateObject("excel.Application")
    	exl.Visible = True 'False
    'Ouverture du fichier
    	exl.workbooks.open Fichier_XLS
     
                 set fichxl = exl.workbooks.add
     
    'Ajoute un module
    	Set mdle = fichxl.VBProject.VBComponents.Add(1)
    Lorsque j'effectue des modifs pour corriger le problème, j'ai beaucoup d'erreurs de manipulation d'Objet. Je ne doit pas être loin de la solution mais pour l'instant je coince.

    En espérant d'avoir des infos pour trouver la solution.

    Merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir, ghostvb

    je suis un peu perplexe devant tes intentions, pourquoi créer une macro VBA puis l'exécuter .. tu peu agir directement sur ton classeur Excel avec ton script vbs !

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Bonsoir bbil,

    C'est dans une volonté de totale automatisation du script que je pensais faire de la sorte, pour qu'il s'exécute de façon transparente sans aucune intervention extérieure. Comme cela on peut intégrer ce que l'on veut ensuite (graphique,....) pour traiter les infos de la feuille Excel.
    Mon idée est peut-être farfelue ?
    S'il existe un moyen plus facile, je suis preneur.
    Que veux-tu dire par " tu peu agir directement sur ton classeur Excel avec ton script vbs " ?

    Merci

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par ghostvb Voir le message
    ...
    Mon idée est peut-être farfelue ?
    ...
    en tout cas je n'en comprends pas le but .. la macro écrite par ton script va être lancée comment ? et quand (par rapport à son écriture) ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Après son écriture, elle se lancera tout de suite et ensuite le fichier xls sera envoyé par mail à d'autres utilisateurs pour consultation ou analyse. C'est pour une analyse de charge de serveur de fichier qui sera exécuté en fond tous les jours. Je ne veux pas d'intervention par un utilisateur du début à la fin.

    Si il y a d'autres solutions à explorer et plus simples, je suis preneur sans problème !!!

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    pkoi créer une macro ?
    Tu pourrais plutot dans ton script créer une fonction qui fait ce que fait la macro, mais donc lancé par le script.

    Je comprendrais l'intérêt de la macro si celle-ci se lançait automatique à l'ouverture du classeur reçu par l'utilisateur.
    Par contre si tu exécutes la macro sur le classeur, avant de l'envoyer à l'utiliateur, elle n'a pas plus d'intérêt qu'une fonction VBS de ton script qui ferait les même opérations.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    On dit souvent que la nuit porte conseil car je viens de trouver ce matin en arrivant au boulot.
    Voici un code pour ouvrir un fichier existant et écrire une macro vba le tout piloté par du VBScript :

    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
    	Set exl = WScript.CreateObject("Excel.Application")
    	exl.Visible = True 'False
     
    	Set sh = WScript.CreateObject("WScript.Shell") 
    	on error resume next
    	sh.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\accessVBOM",1,"REG_DWORD"
    	on error goto 0
     
    'Ouvre le fichier 
    	set fichxl = exl.workbooks.add("C:\ControleDisque.xls")
     
    'Ajoute un module
    	Set mdle = fichxl.VBProject.VBComponents.Add(1)
     
     
    'Ecrit la macro dans le fichier Excel
    	num=0
    	num=num+1:mdle.CodeModule.InsertLines num, "Sub MacroMiseEnFormeImportTxt()"
    	num=num+1:mdle.CodeModule.InsertLines num, "'"
    	num=num+1:mdle.CodeModule.InsertLines num, "' MacroMiseEnFormeImportTxt Macro"
    	num=num+1:mdle.CodeModule.InsertLines num, "' Macro enregistrée le 22/08/2008 par pl"
    	num=num+1:mdle.CodeModule.InsertLines num, "'"
    	num=num+1:mdle.CodeModule.InsertLines num, "'"
    	num=num+1:mdle.CodeModule.InsertLines num, "End Sub"
    Après à chacun d'y inclure ce qu'il veut dans sa macro

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

Discussions similaires

  1. [XL-2007] Comment créer une macro en boucle sous excel ?
    Par jib orhan dans le forum Excel
    Réponses: 2
    Dernier message: 15/04/2014, 13h16
  2. [XL-2007] Créer un laptimer dans une macro excel
    Par race94 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/02/2011, 11h43
  3. [XL-2003] Créer une macro pour plusieurs fichiers excel
    Par bocki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 22h53
  4. [XL-2000] Créer une macro automatique à l'ouverture d'Excel
    Par Nicolas Plan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/04/2009, 11h27
  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