阅读Office Open XML(OOXML)部分使用Excel VBA

时间:2016-10-01 19:03:17

标签: vba openxml

我想要使用VBA读取Excel文件的XML部分,但无法找到任何资源来开始。这可能吗?我只看过.NET的解决方案。

要清楚......我已经能够创建一个CustomXMLPart并从我创建的内容中读取/写入。但是,我试图阅读Excel创建的标准XML部分(如果这是有道理的)。具体来说,我有兴趣阅读" workbook.xml"的内容。一部分。

有人可以提供一个基本参考和样本来帮助我入门吗?

非常感谢!

修改

我被问到了如何尝试使用它的例子。

嗯,我可以使用很多例子,但这里有一个示例' workbook.xml'我建立。我如何阅读与“MyNamedRange”相关联的工作表和单元格引用?使用Office OpenXML引用?

顺便说一下......我知道还有其他方法可以做这个具体的例子,但我正在寻找OpenXML这样做的方法,这只是一个例子。

这里是xml:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <fileVersion rupBuild="4507" lowestEdited="4" lastEdited="4" appName="xl"/>
    <workbookPr defaultThemeVersion="124226" codeName="ThisWorkbook"/>
    <bookViews>
        <workbookView windowHeight="5970" windowWidth="11475" yWindow="45" xWindow="480"/>
    </bookViews>
    <sheets>
        <sheet r:id="rId1" sheetId="1" name="Sheet1"/>
        <sheet r:id="rId2" sheetId="2" name="Sheet2"/>
        <sheet r:id="rId3" sheetId="3" name="Sheet3"/>
    </sheets>
    <definedNames>
        <definedName name="MyNamedRange1">Sheet1!$A$1</definedName>
        <definedName name="MyNamedRange2">Sheet1!$A$2</definedName>
    </definedNames>
    <calcPr calcId="125725"/>
</workbook>

1 个答案:

答案 0 :(得分:0)

仅晚了4年,但我注意到该页面经常被浏览。 Jan Karel Pieterse有免费的可下载VBA宏集,可以编辑OOXML。 source

这不是一种超级优雅的方法,但确实有效。必须关闭要编辑的文件。该宏将文件解压缩,允许您使用VBA字符串操作对XML进行更改,然后重新压缩。大型文件的解压缩/重新压缩步骤很慢,因此它更适合于批处理情况,在这种情况下您可以让它在没有监督的情况下运行。