【发布时间】:2018-01-05 20:53:03
【问题描述】:
我使用 EPPlus 库批量编辑一些现有的 XLSM 文件。在文件中,我替换了一行 VBA 代码,仅此而已。如果我在 Excel 代码编辑器中手动编辑同一行,一切正常。
当我使用 Excel 2013 (15.0.4989.1000) 打开一些文件时,显示以下错误消息。
我们发现“test.xlsm”中的某些内容存在问题。你想让我们 尽可能多地恢复?如果您信任此工作簿的来源, 点击是。
如果我单击是,修复报告会显示以下条目。但这条信息有点过于笼统,无法进一步帮助我。
删除的记录:命名范围来自 /xl/workbook.xml-Part (Arbeitsmappe)
这是我的 C# 代码,用于编辑 XLSM 文件。我可以更新我的代码还是必须在编辑之前更新 XLSM 文件?
static void PatchVba(string filePath, string oldCode, string newCode)
{
var wbFileInfo = new FileInfo(filePath);
using (var package = new ExcelPackage(wbFileInfo, false))
{
foreach (var m in package.Workbook.VbaProject.Modules)
{
if (m.Code.Contains(oldCode))
{
m.Code = m.Code.Replace(oldCode, newCode);
Console.WriteLine("VBA Patched in \"{0}\"", filePath);
}
}
try
{
package.SaveAs(wbFileInfo);
}
catch
{
Console.WriteLine("Could not save patched file \"{0}\".", filePath);
}
}
}
【问题讨论】: