【问题标题】:store word content in variable将单词内容存储在变量中
【发布时间】:2020-07-05 16:05:44
【问题描述】:

如何在 VBA 中复制 Word 文档的全部内容(大约 2 页)并存储在变量中?

我一直在尝试几件事,但都没有奏效:

Dim mainData As String
ThisDocument.Activate
ActiveDocument.WholeStory 'error on this line
mainData = Selection.Text

使用“记录宏”,我可以模拟选择一段或整个文本,但我无法模拟将其存储到变量中。

以上代码抛出

'此命令不可用,因为没有打开文档',

但我不是先激活这个(当前)文档,然后选择它(ActiveDocument.WholeStory)吗? 为什么这不起作用?

稍后编辑:我设法做到了这样的选择:

Dim sText As String
Application.Selection.ClearFormatting
Application.Selection.WholeStory
sText = Application.Selection.Text
MsgBox sText

但问题是我无法将整个文本(2 页)存储在变量中。它的一部分被截断。你知道如何逐字存储(我一次只需要一个字)?

稍后编辑。我在文本上应用了strReverse,发现文本实际上完全存储在变量中,只是没有完全显示在消息框中。

【问题讨论】:

标签: vba ms-word


【解决方案1】:

不要在代码中使用ThisDocument,除非您特别想处理存储和运行代码的文件。 ThisDocument 是该文件的“代号”。

改为使用ActiveDocument 表示当前在 Word 窗口中处于活动状态的文档。

另外,如果您希望当前活动文档中的选择,没有理由激活它 - 它已经处于活动状态。

所以要在一个字符串中获取整个文档内容

Dim mainData As String
mainData = ActiveDocument.Content.Text

其中Content 将整个主体的文本作为 Range 对象返回。

注意:MsgBox 有一个字符上限。如果您正在处理长文本字符串并想查看它们包含的内容,则以下内容具有更多(但不是“无限”)容量:

Debug.Print mainData

【讨论】:

    【解决方案2】:

    你只需要:

    Dim mainData As String
    mainData = ActiveDocument.Range.Text
    

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      相关资源
      最近更新 更多