【问题标题】:VBA Word: How to separate content from formatting information?VBA Word:如何将内容与格式信息分开?
【发布时间】:2020-07-07 05:31:37
【问题描述】:

我正在尝试编写一个 VBA 宏,它将给定的 MS Word 文档转换为该文档中包含的文档对象的顺序列表(例如,段落、表格等)。对于这些对象中的每一个,我想提取包含的文本及其显式格式信息以将其保存在数据库中。

对我如何开始有任何指示吗?这个文档解析任务有什么优雅的解决方案吗?

【问题讨论】:

  • 嗨,帕特,你想用这个实现什么,已经有一些解决方案可以帮助你。
  • 嗨,Toby - 我正在尝试改进目前非常手动的文档本地化过程(在语言之间转换文档)。
  • 我的方法是遍历文档中对象的有序列表,检索对象类型,然后为每个对象类型(例如表格和图像)的特定处理设置子例程。
  • 你在问“如何开始”,而我看到你知道你应该走的路……你只需要几个 for each 循环加上你的逻辑的实现,就是这样。
  • 谢谢,KazJaw。我的问题是我不知道要迭代哪个数组或枚举。对此有何见解?我需要一个包含所有文档内容对象的有序数据结构。

标签: vba ms-word


【解决方案1】:

在不了解您的全部要求的情况下,这只是一些建议。

您也许可以做您想做的事,但将 word 文档拆开并重新组合起来将是一项艰巨的任务。如果您确实想采用这种方法,最好的办法可能是提取段落、图像等,并将这些部分作为单独的文档保存在数据库中。然后可以使用

将它们重新组合在一起
For i = 1 To ActiveDocument.Paragraphs.Count

 MsgBox ActiveDocument.Paragraphs.Item(i)


Next i


ActiveDocument.Content.InsertAfter AnotherDocument

这是非常基础的,需要大量工作才能正常工作。

我想知道将文档转换为 html 会更好(只需保存为 HTML),然后您可以使用开源库来允许用户编辑文档的某些部分。例如,为 jquery 添加jeditable 插件,您的 html word 文档中的几乎所有段落都可以编辑。一个简单的后端 php 脚本来保存更改,你就有了一些有用的东西。然后,您还可以为翻译目的记下发生了什么变化。

他们的文档可以在发送给客户之前保存为 word 文档或 pdf 格式

只是一个想法。

【讨论】:

  • 谢谢,托比。在尝试以特定格式提取可靠标记时,我结合使用了基于 HTML 的变通方法和 Perl 脚本(执行相同操作的 VBA 脚本一直失败)。我的主要担忧有两个方面:1) HTML 仅近似于可用格式的全部范围。 2) 复杂的文档会有同样复杂的标记(我担心它可能比清晰的 VBA 脚本更难访问)。
  • 非常感谢指向 jeditable 的指针。我会跟进的。
  • 关于基于对象的 VBA 方法的评论听起来不太令人鼓舞。为什么会这么难?难道没有一个可用的枚举可以迭代以获取文档中的所有对象吗?我的观点是,对于手头的任务来说,段落可能太大了。我想捕获文档中每个单词的所有格式信息!
  • 我想如果有一个迭代你就已经知道了。 Word HTML 在能够复制几乎所有单词功能方面做得非常出色。试着拉动我们的每一个字,看看会发生什么。如果有疑问,请在执行某项操作时记录一个宏,然后查看 VBA 中生成的代码字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多