前提
・Microsoft Excel 12.0 Object Libraryを参照していること
 (EPPlusではマクロの操作はできないため、COMを使用する)
・デスクトップにVBAコードが記載されたテキストファイル
 「sampleMacro.txt」が存在すること
・Excel2007の場合、「Microsoft Office ボタン」-「Excelのオプション」-
 「セキュリティ センター」-「セキュリティ センターの設定」-
 「マクロの設定」-「VBA プロジェクト オブジェクト モデルへの
 アクセスを信頼する」がチェック済みであること
サンプルプログラム
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Vbe.Interop;
using System.Runtime.InteropServices;
(省略)
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Button1_Click(object sender, EventArgs e)
        {
            Excel.Application oExcel = null;
            Excel.Workbook oBook = null;
            Excel.Workbooks oBooks = null;
            VBComponent MyModule = null;
            string fileName = null;
            //Excelのインスタンスを作成
            oExcel = new Excel.Application();
            //Excelファイルの新規作成
            oBooks = oExcel.Workbooks;
            
            oBook = oBooks.Add();
            //エクセルVBAの標準モジュールのフォルダを作成する
            oBook.VBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
            //Module1(標準モジュール)を作成する
            MyModule = oBook.VBProject.VBComponents.Item("Module1");
            //VBAコードが記載されたテキストファイルを流し込む
            MyModule.CodeModule.AddFromFile("C:\\Users\\user\\Desktop\\sampleMacro.txt");
            // マクロ有効ブックとして保存して閉じる
            fileName = "C:\\Users\\user\\Desktop\\sample.xlsm";
            oBook.SaveAs(Filename: fileName, FileFormat: Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled) ;
            oExcel.Quit();
            //開放
            Marshal.ReleaseComObject(MyModule);
            Marshal.ReleaseComObject(oBook);
            Marshal.ReleaseComObject(oBooks);
            Marshal.ReleaseComObject(oExcel);
            MyModule = null;
            oBook = null;
            oBooks = null;
            oExcel = null;
            GC.Collect();
            MessageBox.Show("完了");
        }
    }
      