【发布时间】:2017-08-24 18:41:48
【问题描述】:
我正在尝试在 Word docx 中提取所有嵌入的 Excel 文件。我知道我可以通过将 docx 的文件名更改为 zip 来快速完成此操作,然后在 word/embeddings 文件夹中找到所有 Excel 文件。
问题在于 word/embeddings 中的 Excel 文件具有非常通用的文件名(例如,Microsoft_Excel_Macro-Enabled_Worksheet1.xlsm、Microsoft_Excel_Macro-Enabled_Worksheet2.xlsm)而不是原始文件名。然而,原始文件实际上是 csv 而不是 xlsm 文件。
我没有参与创建此文档。我假设他们使用了 Insert -> Object -> Create From File。另外,我使用的是 Word 2010,但根据兼容性检查器,该文档最初是使用 Word 97-2003 创建的,而这些文件后来是使用 Word 2007 嵌入的。
如果我进入 docx,我可以找到原始文件名,右键单击嵌入的文件图标,然后转到启用宏的工作表对象 -> 转换... -> 更改图标... -> 标题
但是,我不想为一堆嵌入的 Excel 文件手动执行此操作。
那么有没有办法使用一些 vba 代码来提取所有嵌入文件的原始文件名列表?然后我可以使用这个列表作为键来重命名通用命名的文件。
【问题讨论】:
-
当你想在
VBA做一些新的事情时,试着点击左下角的记录按钮,记录你需要做的事情。稍后返回并编辑代码以在整个文档上循环。如果您通过上述方法提供可重现的代码,我可以帮助您完成第二部分。 -
是的,我尝试这样做,但是当我在 Word 中录制宏时,它甚至不允许我右键单击嵌入的文件图标来获取标题。我对 Excel 宏有很多经验,但对 Word 没有。
-
是的。我试图这样做并意识到这一点。如果您知道批处理脚本,我有一个想法可能对您有用。您可以将扩展名更改为
*.zip。然后打开 zip 文件并导航到document.xml.rels文件。读取包含@987654324@ 的每一行并将其写入文本文件。如果我必须这样做,我会这样做。如果您决定使用此选项,请注意几点: 1.7zip可以读取 zip 文件的内部。 2. 你可以在这里找到很多简单的脚本示例。 -
我刚刚查看了
document.xml.rels,但它看起来也没有给我标题信息。它有一些关系 ID。Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/package" Target="embeddings/Microsoft_Excel_Macro-Enabled_Worksheet68.xlsm"/><Relationship Id="rId324" -
我认为如果可以通过 vba 提取此 Caption 信息,则可能需要 vba 答案,因为我无法从 xml 文件中获取它。