2

このマクロは、文書内の表で 4 つの単語のすべてのインスタンスを検索します。ドキュメントの 3 番目のテーブルとしても知られる "ActiveDocument.Tables(3)" を引用して、範囲を限定しました。

私が知りたかったのは:
(1)4つのwhileループを記述して、単語の4つの個別のインスタンスの値を見て記録する簡単な方法があれば。
(2) ドキュメントの 3 番目の表の 3 列目のコードの範囲を制限する構文上の方法があるかどうか。

while ループがあった理由は、4 つの異なる単語の 4 つの異なる値を Excel ドキュメントに記録するためです

これまでの私のコードは次のとおりです。

Sub CreateChartFromExistingTable()

    Dim salesChart As Chart
    Dim chartWorkSheet As Excel.Worksheet
    Dim iCount As Integer
    Dim range As range
    Dim List
    Dim jCount As Integer
    Dim range1 As range
    Dim kCount As Integer
    Dim range2 As range
    Dim lCount As Integer
    Dim range3 As range


    Set salesChart = ActiveDocument.Shapes.AddChart.Chart
    Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)

    Set range = ActiveDocument.Tables(3).range
    Set range1 = ActiveDocument.Tables(3).range
    Set range2 = ActiveDocument.Tables(3).range
    Set range3 = ActiveDocument.Tables(3).range
    iCount = 0

    With range.Find
    .Text = "Passed"
    .Format = True
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False

        Do While .Execute(Forward:=True) = True
            iCount = iCount + 1
        Loop

    End With

    jCount = 0
    With range1.Find
    .Text = "Failed"
    .Format = True
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False

        Do While .Execute(Forward:=True) = True
            jCount = jCount + 1
        Loop

    End With
    kCount = 0
    With range2.Find
    .Text = "No Run"
    .Format = True
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False

        Do While .Execute(Forward:=True) = True
            kCount = kCount + 1
        Loop

    End With
    lCount = 0
    With range3.Find
    .Text = "N/A"
    .Format = True
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False

        Do While .Execute(Forward:=True) = True
            lCount = lCount + 1
        Loop

    End With

    chartWorkSheet.ListObjects("Table1").Resize chartWorkSheet.range("A1:B5")
    chartWorkSheet.range("Table1[[#Headers],[Series 1]]").FormulaR1C1 = "Test Instances Summary Graph"

    chartWorkSheet.range("A2").FormulaR1C1 = "Passed"
    chartWorkSheet.range("A3").FormulaR1C1 = "Failed"
    chartWorkSheet.range("A4").FormulaR1C1 = "No Run"
    chartWorkSheet.range("A5").FormulaR1C1 = "N/A"
    chartWorkSheet.range("B2").FormulaR1C1 = iCount
    chartWorkSheet.range("B3").FormulaR1C1 = jCount
    chartWorkSheet.range("B4").FormulaR1C1 = kCount
    chartWorkSheet.range("B5").FormulaR1C1 = lCount

    salesChart.ChartType = xlPie
    salesChart.ChartData.Workbook.Application.Quit

End Sub

MS Word の VB エディタで Microsoft Excel 14.0 Object Library が参照されていることを確認してください。

4

1 に答える 1