Excel VBA将标记文本从一个word文件复制到另一个word文件

时间:2015-07-28 14:28:42

标签: excel vba excel-vba

我有一个Word文件,其中包含标记的文本块:

Text 1
Text 1 Line 1
Text 1 Line 2
Text 1 End

Text 2
Text 2 Line 1 
Text 2 Line 2
Text 2 Line 3
     .
     .
Text 2 Line N
Text 2 End

etc.

我需要我的Excel宏来查找指定标志之间的文本块"文本X"和"测试X结束"然后获取文本的副本(不包括标志)并将其粘贴到指定位置的第二个Word文档中。

我已经尝试调整堆栈交换上发布的许多解决方案但是无法将这些解决方案编译和/或运行,因为大多数人似乎都认为我是在Word而不是Excel中编写我的宏。 / p>

我在Excel中工作的原因是我正在通过Excel界面访问的现有Excel宏套件中添加功能。

代码的当前状态是:

Sub Word_In_Word_Out()

Application.ScreenUpdating = False
Path = ThisWorkbook.Path
Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
Set inDoc = wrdApp.Documents.Open(Path & "\" & "Word Input" & ".docx")
inDoc.Activate

Dim rng1 As Range
Dim rng2 As Range
Dim strTheText As String

Set rng1 = ActiveDocument.Range
If rng1.Find.Execute(FindText:="Text 2") Then
    Set rng2 = ActiveDocument.Range(rng1.End, ActiveDocument.Range.End)
    If rng2.Find.Execute(FindText:="Text 2 End") Then
        strTheText = ActiveDocument.Range(rng1.End, rng2.Start).Text
        MsgBox strTheText
    End If
End If

End Sub

目前停止编辑:

{if rng1.Find.Execute(FindText:=" Text 2")Then}

" .Find"突出显示并且"参数不是可选的"错误消息

1 个答案:

答案 0 :(得分:1)

Excel和Word都有一个Range对象。因为您在Excel VBA中但是尝试引用Word Range对象,所以您需要限定变量声明,以便Excel知道您正在使用Word Range对象。

Dim rng1 As Word.Range
Dim rng2 As Word.Range

您也不需要使用ActiveDocument,因为您已使用inDoc创建了对文档的引用。因此,在您的代码中,将ActiveDocument替换为inDoc

进行了这些更改之后,您的代码示例使用了一个小型测试文档。