【问题标题】:Excel VBA to copy flagged text from one word file to another word fileExcel VBA将标记的文本从一个word文件复制到另一个word文件
【发布时间】:2015-07-28 14:28:41
【问题描述】:

我有一个包含标记的文本块的 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 宏来查找指定标志“Text X”和“Test X End”之间的文本块,然后复制文本(不包括标志)并将其粘贴到第二个 Word 文档中指定位置。

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

我在 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”并显示“Argument not Optional”错误消息

【问题讨论】:

  • 添加一些代码,这样我们就可以看到你已经走了多远。另外,请解释为什么要在 Excel 中运行它。
  • 根据您的要求添加代码

标签: vba excel


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多