あびす 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);