2009-10-08 15 views
5

¿Es posible que VBScript escriba una macro dentro del archivo de Excel cuando se genera y que podría ejecutarse cada vez que se abra el archivo?VBScript para escribir una macro dentro de un archivo de Excel

Ive consiguió un VBScript para auto generar un archivo de Excel y algunos datos dentro de ella, esto se ejecuta una vez y genera el archivo con todos los datos/clase etc.

Lo que necesita es tener una cierta interactividad que normalmente se ejecutará con una macro mientras el programa se está ejecutando y alguien ve los datos, el problema aquí es que es un archivo generado automáticamente, no se guardan las macros.

En caso afirmativo, ¿cómo se implementaría esto? ¿Cómo se puede escribir posteriormente una macro en vbscript?

+0

¿se puede generar el archivo de una plantilla XLST que contiene una copia de la macro? – Mikeb

Respuesta

5

Gran consejo divo, sí, podría crearlo a partir de una plantilla, pero es un caso en el que necesitaría más flexabilidad e integración con variables en el script.

Excel modelo de objetos VBProject.VBComponents objeto funciona como un encanto y hace exactamente lo que estaba buscando, con el propósito de cualquier otra persona en busca de una respuesta similar encontré este mientras se mira en el objeto 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 

Fuentes: Scripting Guy Add a Macro to an Excel Spreadsheet

String for excel macro creation

2

Probablemente la forma más simple sería crear manualmente un documento de Excel que contenga las macros deseadas. Este documento luego serviría como una plantilla para su VBScript.

En lugar de crear un archivo nuevo, debe copiar esta plantilla, abrirla en Excel y rellenarla con los datos utilizando su VBScript.

Una opción más compleja y flexible sería utilizar el modelo de objetos de Excel. Busque el objeto ActiveWorkbook.VBProject.VBComponents que le permitirá agregar formularios, módulos y clases al proyecto VBA del documento actual. Sin embargo, esta opción requiere ciertas configuraciones de seguridad (básicamente, debe permitir el acceso programático al proyecto VBA).

Cuestiones relacionadas