如何使用VSTO创建新的Personal.xlsb工作簿?
在VSTO中创建Personal.xlsb个人宏工作簿
Personal.xlsb是Excel的个人宏工作簿,默认存储在XLSTART文件夹下,Excel启动时会自动加载它。直接用Workbooks.Add()无法直接创建命名为Personal.xlsb的文件,需要先创建工作簿,再将其保存到指定路径并设置正确格式。
实现步骤:
- 确认XLSTART路径存在:如果
C:\Users\user\AppData\Roaming\Microsoft\Excel\XLSTART为空或不存在,先创建该目录(避免保存时路径错误)。 - 创建工作簿并保存为Personal.xlsb:使用
Workbooks.Add()创建工作簿后,调用SaveAs()方法指定路径、文件名和文件格式。 - 重启Excel生效:保存完成后,需要重启Excel,Personal.xlsb才会在启动时自动加载。
完整代码示例:
using System.IO; using Microsoft.Office.Interop.Excel; // 获取XLSTART路径 string xlStartPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Microsoft\Excel\XLSTART" ); // 确保路径存在 if (!Directory.Exists(xlStartPath)) { Directory.CreateDirectory(xlStartPath); } // 创建工作簿 Workbook personalWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(); // 保存为Personal.xlsb(Excel二进制工作簿格式) string personalFilePath = Path.Combine(xlStartPath, "Personal.xlsb"); personalWorkbook.SaveAs( Filename: personalFilePath, FileFormat: XlFileFormat.xlExcel12 // 对应.xlsb格式 ); // 可选:保存后关闭工作簿(如果不需要继续操作) personalWorkbook.Close(SaveChanges: false);
注意事项:
- 保存时必须指定
XlFileFormat.xlExcel12,这是.xlsb对应的文件格式枚举值,不能用默认格式保存。 - 如果XLSTART路径下已经存在Personal.xlsb,执行
SaveAs()会覆盖原文件,建议先判断文件是否存在再操作。 - 宏设置:如果Excel的宏安全级别较高,可能需要手动启用Personal.xlsb的宏,或在信任中心添加XLSTART路径为信任位置。
内容的提问来源于stack exchange,提问作者LearnAHK
相关产品推荐
相关产品推荐

