2009-10-08 8 views
5

Est-il possible pour VBScript d'écrire une macro dans le fichier Excel lorsqu'il est généré et capable de s'exécuter à chaque ouverture du fichier?VBScript pour écrire une macro dans un fichier Excel

Ive a obtenu un VBScript pour générer automatiquement un fichier Excel et des données qu'il contient, cela va une fois et génère le fichier avec toutes les données/sortes etc.

Ce que je besoin est d'avoir une certaine interactivité qui normalement être exécuté avec une macro pendant que le programme est en cours d'exécution et que quelqu'un consulte les données, le problème étant ici que c'est un fichier généré automatiquement, aucune macro n'est enregistrée.

Si oui, comment cela pourrait-il être implémenté, comment une macro à exécuter plus tard peut-elle être écrite dans le vbscript?

+0

Pouvez-vous générer le fichier à partir d'un modèle de XLST qui contient une copie de la macro? – Mikeb

Répondre

5

Excellent conseil divo, oui je pourrais le créer à partir d'un template mais c'est un cas où j'aurais besoin de plus de flexibilité et d'intégration avec des variables dans le script.

Les VBProject.VBComponents objet de modèle d'objet Excel fonctionne comme un charme et fait exactement ce que je cherchais, dans le but de ceux qui cherchent d'autre pour une réponse similaire, je trouve cela tout en regardant dans l'objet VBProject:

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls") 
     Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
     strCode = _ 
     "sub test()" & vbCr & _ 
     " msgbox ""Inside the macro"" " & vbCr & _ 
     "end sub" 
     xlmodule.CodeModule.AddFromString strCode 
objWorkbook.SaveAs "c:\scripts\test.xls" 
objExcel.Quit 

Sources: Scripting Guy Add a Macro to an Excel Spreadsheet

String for excel macro creation

2

Probablement le moyen le plus simple serait de créer manuellement un document Excel contenant les macros désirées. Ce document serait alors serveur comme un modèle pour votre VBScript. Au lieu de créer un nouveau fichier, copiez ce modèle, ouvrez-le dans Excel et remplissez-le avec les données à l'aide de votre script VBScript.

Une option plus complexe et flexible consisterait à utiliser le modèle d'objet Excel. Recherchez l'objet ActiveWorkbook.VBProject.VBComponents qui vous permettra d'ajouter des formulaires, des modules et des classes au projet VBA du document en cours. Cependant, cette option nécessite certains paramètres de sécurité (vous devez en principe autoriser l'accès par programmation au projet VBA).

Questions connexes