2009-10-08 16 views
5

VBScriptは、ファイルを開くときにいつでも実行できるように、Excelが生成されたときにExcelファイル内にマクロを書き込むことはできますか?Excelファイル内にマクロを書き込むためのVBScript

アイブ氏は、これは一度実行され、すべてのデータ/並べ替えなどでファイルを生成し、Excelファイルとその中のいくつかのデータを自動生成するVBScriptを得た

私は通常と同じいくつかの双方向性を持つようにされて必要なものプログラムが実行中に誰かがデータを表示している間にマクロを使って実行すると、ここで問題となるのは自動生成されたファイルなので、マクロは保存されません。

もしこれがどのように実装されたら、後に実行されるマクロをvbscriptに書き込むことができますか?

+0

あなたは、マクロのコピーが含まれていXLSTテンプレートからファイルを生成することができますか? – Mikeb

答えて

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オブジェクトモデルを使用することです。現在のドキュメントのVBAプロジェクトにフォーム、モジュール、およびクラスを追加できるようにするActiveWorkbook.VBProject.VBComponentsオブジェクトを探します。ただし、このオプションには特定のセキュリティ設定が必要です(基本的にVBAプロジェクトへのプログラムによるアクセスを許可する必要があります)。

関連する問題