我有一个包含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
答案 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,并且我已经相应地编辑了我的代码。