将数据从MS Word移动到Excel

时间:2012-06-05 16:16:18

标签: excel vba excel-vba ms-word word-vba

我有一个包含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

1 个答案:

答案 0 :(得分:0)

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,并且我已经相应地编辑了我的代码。

相关问题