2016-03-19 23 views
2

段落という単語のいくつかのプロパティを見つけるマクロがあります。マクロを使って '4行以上の段落'を探す必要があります。MS Wordマクロで複数の段落プロパティを検索する方法

私はこのコードを試してみました:

If oPar.LineCount = LineCount + 4 Then 

は、コード全体については、以下を参照してください:

Sub CheckKeepLinesTogether() 
Application.ScreenUpdating = False 
Const message As String = "Check Keep Lines Together" 
Dim oPar As Paragraph 
Dim oRng As Word.Range 
Dim LineCount As Long 

For Each oPar In ActiveDocument.Paragraphs 
Set oRng = oPar.Range 

With oRng 
    With .Find 
     .ClearFormatting 
     .Text = "^13" 
     .Execute 
    End With 

    Set oRng = oPar.Range 

     If oPar.KeepTogether = False Then 
     If oPar.LineCount = LineCount + 4 Then 

      .Select 
      Selection.Comments.Add Range:=Selection.Range 
      Selection.TypeText Text:=message 
      Set oRng = Nothing 

     End If 
     End If 
    End With 
Next 
Application.ScreenUpdating = True 
End Sub 
+0

をテストしていないMSDNでのレンジ特性について学ぶためにしてみてください。範囲はVBAのすべての中心です。タグに関する情報を読んだら、タグを選択してください。 – Rahul

答えて

3

コメントのないコードと障害のある行に置き換え:ところで

'If oPar.LineCount = LineCount + 4 Then 
    If oPar.Range.ComputeStatistics(wdStatisticLines) >= 4 Then 

Set oRng = oPar.Rangeを2回設定する必要はありません。

+0

私は理由はわかりませんが、それは必須です。設定せずに、それは範囲として。それはms-wordで何か変態を見つけるものです。 – Rahul

+0

Davy CとRahulの両方に感謝します。私はあなたのコードとそれが正しく動作していることをテストしました。しかし、私はRahulのコードのこの行に誤りがあります。 'Selection.TypeText Text:= message' それ以外は正しく動作します。ありがとう! – Thilina

+0

@Thilina:選択はoRngで置き換える必要があります – Rahul

1

Sub CheckKeepLinesTogether() 
    Application.ScreenUpdating = False 
    Const message As String = "Check Keep Lines Together" 
    Dim oPar As Paragraph 
    Dim oRng As Word.Range 
    Dim LineCount As Long 

    For Each oPar In ActiveDocument.Paragraphs 
    Set oRng = oPar.Range 

    With oRng 
     With .Find 
      .ClearFormatting 
      .Text = "^13" 
      .Execute 
     End With 
      If oPar.KeepTogether = False Then 
      If oPar.Range.ComputeStatistics(wdStatisticLines) >= 4 Then 
       Set oRng = oPar.Range 
       oRng.Comments.Add Range:=oRng 
       oRng.TypeText Text:=message 
      Set oRng = Nothing 
      End If 
      End If 
     End With 
    Next 
    Application.ScreenUpdating = True 
    End Sub 
関連する問題