【问题标题】:Move data from MS Word to Excel将数据从 MS Word 移动到 Excel
【发布时间】:2012-06-05 16:16:17
【问题描述】:

我有一个包含 400 道选择题的 Microsoft Word 文档。我需要将所有这些文本放入 Microsoft Excel 图表中,我认为如果我能够有一个宏允许我选择所有以 a. 开头的文本并在第一段对象处结束该部分,那会容易得多在a. 之后。

我尝试寻求帮助,并被告知使用以下宏,但该宏没有执行任何操作。我只希望宏只选择所有文本。如果我要在 Microsoft Word 中手动执行此操作,我将按住 ctrl 并突出显示所有以 a. 开头并以第一个段落对象结尾的文本。

 Sub Aselection()
'
' Aselection Macro
'

Dim pgh As Paragraph
For Each pgh In ThisDocument.Paragraphs
With pgh
If Left(.Range.Text, 2) = "a." And Left(Right(.Range.Text, 3), 2) = "a." Then
Debug.Print .Range.Text
End If
End With
Next

End Sub

【问题讨论】:

  • 我不熟悉 Word 的 VBA,但这只会在即时窗口 (Debug.Print .Range.Text) 中打印找到的文本,您可以在 Visual Basic 编辑器中按 CTRL+G 打开它.因此,您需要将该行替换为可以选择文本或您需要执行的任何操作。
  • @user1437779: assylias 是对的。一种选择是将找到的文本存储在一个数组中,然后最后将其导出到 Excel。

标签: excel vba ms-word


【解决方案1】:

ThisDocument 通常是指包含执行代码的模板文档。 请改用ActiveDocument

正如@assylias 在他的评论中所说,Debug.Print 仅用于代码调试目的。 将整行替换为 .Range.Select

这应该可行:

Sub Aselection()

    Dim o As Object
    Dim pgh As Paragraph

    Set o = CreateObject("excel.application")
    o.workbooks.Open ("E:\Aashay Data\Projects\Excel\Carton\Screen Printing.xlsx")
    o.ActiveWorkbook.worksheets.Add.Name = "x"
    o.ActiveWorkbook.worksheets("x").Activate


    For Each pgh In ActiveDocument.Paragraphs
        With o.ActiveWorkbook.worksheets("x")
            Debug.Print pgh.Range.Text
            If Left(pgh.Range.Text, 2) = "a." And Left(Right(pgh.Range.Text, 3), 2) = "a." Then
                .Cells(i, 2).Value = pgh.Range.Text
                i = i + 1
            End If
        End With
    Next
    o.Quit

End Sub


编辑:在查看了这个并测试了一个 lorem ipsum 文本之后,我意识到 Word VBA 不允许您选择多个不连续的段(有关更多信息,请参阅 MS 支持文章 KB288424)。 我想最简单的方法是简单地导出到 debug.print 所在的 excel,并且我已经相应地编辑了我的代码。

【讨论】:

  • 另一种选择是将每个“a”行附加到文本文件中,因此不必选择所有“a”行,您只需一个接一个地找到它们,然后将它们附加到一个文本文件。到达文档末尾后,您可以对文本文件中的信息执行任何您需要的操作(根据您需要执行的操作,这可能比将 Excel 引入混合中更容易)。
  • @rryanp:我本来打算这样做,但就像 OP 想要的那样简单地将它扔到 Excel 中一样容易。所以我就把 Excel 代码放上来了。
猜你喜欢
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
相关资源
最近更新 更多