1

400問の多肢選択式テストの質問を含むMicrosoftWord文書があります。a.このすべてのテキストをMicrosoftExcelチャートに入れる必要があります。マクロを使用して、セクションの最初と最後の段落オブジェクトで始まるすべてのテキストを選択できるようにすると、はるかに簡単になると思いましたa.

ヘルプを取得しようとすると、以下のマクロを使用するように言われましたが、マクロは何もしません。マクロですべてのテキストのみを選択したいだけです。これをMicrosoftWordで手動で行う場合は、最初の段落オブジェクトで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
4

1 に答える 1

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にエクスポートすることであり、それに応じてコードを編集したと思います。

于 2012-06-06T06:41:34.253 に答える