2009-10-08 92 views
5

生成時,VBScript可以在Excel文件中寫入一個宏,並且每當文件打開時都可以運行該宏。在Excel文件中寫入宏的VBScript

Ive得到一個VBScript來自動生成一個Excel文件,並在它的一些數據,這個運行一次,並與所有的數據/排序等生成文件

我需要的是有一些交互,通常會在程序運行時有人用宏運行,有人查看數據,這裏的問題是因爲它是自動生成的文件,所以沒有保存宏。

如果是的話這將如何實現,以後如何在vbscript中寫入宏?

+0

您可以生成從包含宏的副本XLST模板的文件? – Mikeb 2009-10-08 13:45:05

回答

5

偉大的意見divo,是的,我可以從模板創建它,但它是一種情況下,我需要更多的靈活性和與腳本中的變量集成。

Excel對象模型對象VBProject.VBComponents就像一個魅力和不正是我一直在尋找,爲別人的目的,尋找一個類似的答案,我發現這一點的同時尋找到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 

來源: Scripting Guy Add a Macro to an Excel Spreadsheet

String for excel macro creation

2

可能最簡單的方法是手動創建包含所需宏的Excel文檔。然後,該文檔將作爲VBScript的模板服務器。

除了創建一個新文件,您可以複製此模板,在Excel中打開它並使用VBScript將其填充到數據中。

更復雜和更靈活的選項是使用Excel對象模型。查找ActiveWorkbook.VBProject.VBComponents對象,該對象允許您將表單,模塊和類添加到當前文檔的VBA項目中。但是,此選項需要某些安全設置(基本上,您必須允許以編程方式訪問VBA項目)。