あびす ver0.01
「プロジェクトあびす」という、たいしたことのないプロジェクトで、エクセルの関数の日本語化を行っています。↓
http://cs.atnifty.com/community/files/folders/kaba/entry383.aspx
ここでC#からエクセルブックにVBAマクロを追加しています。
やっている方法は以下。
//Excel作成 Excel.Application app = new Excel.Application(); Excel._Workbook bk = app.Workbooks.Add(); Microsoft.Vbe.Interop.VBComponent vbc = bk.VBProject.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule); if (vbc != null) { string auto_open = ""; auto_open += "Sub auto_open()\n"; string macro = "Public Function "; macro += jpfuncname; macro += "( " + hikisu + " ) " + " As " + returntype + "\n"; macro += " " + jpfuncname + " = Application.WorksheetFunction." + funcname + "( " + param + " ) " + "\n"; macro += "End Function"; vbc.CodeModule.AddFromString(macro); //説明 string desc = ""; //desc += "Sub auto_open()\n"; desc += " Application.MacroOptions _\n"; desc += " Macro:=\"" + jpfuncname + "\", _\n"; desc += " Description:=\"" + description + "\", _\n"; desc += " Category:=\"日本語化関数\"\n"; desc += "\n"; //desc += "End Sub"; auto_open += desc; auto_open += "End Sub\n"; vbc.CodeModule.AddFromString(auto_open); app.DisplayAlerts = false; bk.SaveAs(fn, Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled); app.DisplayAlerts = true; bk.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(app);