2009-10-08 32 views
5

È possibile che VBScript scriva una macro all'interno del file excel quando viene generata che potrebbe essere eseguita ogni volta che il file viene aperto?VBScript per scrivere una macro all'interno di un file Excel

Ive ha ottenuto un VBScript per generare automaticamente un file excel e alcuni dati al suo interno, questo viene eseguito una volta e genera il file con tutti i dati/tipi ecc

cosa ho bisogno è di avere una certa interattività che normalmente essere eseguito con una macro mentre il programma è in esecuzione e qualcuno visualizza i dati, il problema è che essendo un file generato automaticamente, non vengono salvati macro.

Se sì, come sarebbe implementato, come può essere eseguita in seguito una macro in vbscript?

+0

Riesci a generare il file da un modello XLST che contiene una copia della macro? – Mikeb

risposta

5

Ottimo consiglio divo, sì, potrei crearlo da un modello ma è un caso in cui avrei bisogno di più flessibilità e integrazione con le variabili nella sceneggiatura.

Excel oggetto modello VBProject.VBComponents oggetto funziona come un fascino e fa esattamente quello che stavo cercando, allo scopo di chiunque altro alla ricerca di una risposta simile Ho trovato questo mentre esaminando l'oggetto 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 

Fonti: Scripting Guy Add a Macro to an Excel Spreadsheet

String for excel macro creation

2

Probabilmente il modo più semplice sarebbe quello di creare manualmente un documento Excel contenente le macro desiderate. Questo documento sarebbe quindi server come modello per VBScript.

Invece di creare un nuovo file, copiare questo modello, aprirlo in Excel e popolarlo con i dati utilizzando VBScript.

Un'opzione più complessa e flessibile sarebbe utilizzare il modello a oggetti di Excel. Cerca l'oggetto ActiveWorkbook.VBProject.VBComponents che ti consentirà di aggiungere moduli, moduli e classi al progetto VBA del documento corrente. Tuttavia, questa opzione richiede determinate impostazioni di sicurezza (in pratica è necessario consentire l'accesso programmatico al progetto VBA).

Problemi correlati