在变量vba中存储单词内容

时间:2018-03-30 21:11:50

标签: vba ms-word

如何在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,发现文本实际上完全存储在变量中,只是没有完全显示在消息框中。

2 个答案:

答案 0 :(得分:2)

不要在代码中使用ThisDocument,除非您特别想要解决存储和运行代码的文件。 ThisDocument是"代码名称"该文件。

相反,使用ActiveDocument表示Word窗口中当前处于活动状态的文档。

另外,如果您想在当前有效的文档中进行选择,则没有理由激活 - 它已经处于活动状态。

所以要用字符串

获取整个文档内容
Dim mainData As String
mainData = ActiveDocument.Content.Text

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

注意:MsgBox的字符数限制为上限。如果您正在使用长文本字符串并想要查看他们持有的内容,则以下内容包含更多(但不是"无限")容量:

Debug.Print mainData

答案 1 :(得分:0)

您只需要:

Dim mainData As String
mainData = ActiveDocument.Range.Text