EPPlus 编辑的 XLSM 文件在 Excel 中显示错误

EPPlus edited XLSM files show Error in Excel

我使用 EPPlus 库来批量编辑一些现有的 XLSM 文件。在文件中,我替换了一行 VBA 代码,仅此而已。如果我在 Excel 代码编辑器中手动编辑同一行,一切都很好。

当我打开某些 Excel 2013 (15.0.4989.1000) 的文件时,显示以下错误消息。

We found a problem with some content in 'test.xlsm'. Do you want us to recover as much as we can? If you trust the source of this workbook, click Yes.

如果我单击“是”,修复报告会显示以下条目。但该消息过于笼统,无法进一步帮助我。

Removed Records: Named range from /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);
        }
    }
}

我找到问题所在了。在编辑后的 ​​XLSM 文件中,范围名称多次使用且范围重叠。我太专注于我的 C# 代码而没有找到根本原因。

因此删除命名范围可以解决问题。但是知道为什么我可以毫无问题地使用 Excel 而不是使用 EPPlus 编辑它仍然很有趣。