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