2016-06-14 4 views
-1

私のプログラムから生成されている単語文書があり、現在は<BR/>タグを改行で置き換えたマクロがあります。これはテーブル内の新しいセクションの開始を意味するので、<BR/>タグが存在する行の先頭にボーダーを追加することも考えました。私の現在のコードは次のとおりです。単語vbaの特定の文字列を含む表の行に枠を追加する

With ActiveDocument.Content.Find 
    .Text = "<BR/>" 
    .Forward = True 
    While .Execute 
     .Parent.Text = Chr(10) 
     .Parent.Collapse wdCollapseEnd 
    Wend 
End With 

私は<BR/>がそれに境界線を追加し、その後に発生し、テーブル内の行全体を得ることができる方法は?

私の試みは、これまでに崩壊した後に、whileループの最後に追加することでした:

With .Parent.Row.Borders(wdBorderTop) 
    .LineStyle = wdLineStyleSingle 
    .LineWidth = wdLineWidth050pt 
    .Color = wdColorAutomatic 
End With 

しかし、それは何も(また、エラーなし)を行いません。私は行を正しく把握しているとは思わないが、それ以外の方法は見つけられない。ありがとう。

EDIT:

私は今、多分私は改行部分の前に別のチェックを行う必要があります考えています。したがって、すべてのテーブル行をループするforループを追加する場合は、<BR/>が存在するかどうか、行の先頭に境界線を追加するかどうかを確認してください。

私は単語でvbaに慣れていませんが、通常はexcelを使用して、2つを混ぜていると思います。ここに私がこれまでに持っているものがあります:

Dim oTbl As Table 
    Set oTbl = ActiveDocument.Tables(1) 

    For Each oRow In oTbl.Rows 
    If InStr(1, oRow.Cell(1, 1), "<BR/>", vbBinaryCompare) > 0 Then 
     oRow.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle 
    End If 
    Next 
+0

なぜdownvoteですか?私は自分の質問を完全に説明し、私が試したことを示し、最終的に私自身の質問に答えなければならなかった。 –

答えて

0

私はforループの方法で作業しています。私の最終的なコードは次の通りであった:

Dim oTbl As Table 
Dim oRow As Row 

For Each oTbl In ActiveDocument.Tables 
    For Each oRow In oTbl.Rows 
    If InStr(1, oRow.Cells(1).Range.Text, "<BR/>", vbBinaryCompare) > 0 Then 
     oRow.Borders(wdBorderTop).LineStyle = wdLineStyleSingle 
    End If 
    Next 
Next 

したがって、これは、文書内のすべてのテーブルをループし、各テーブルのすべての行が新しいことを意味する最初のセル内の<BR/>タグを(含む各列上の境界線を追加することセクション)。私は<BR/>タグを改行文字で置き換えるコードの次の部分の前にこれをすべて行います。

これは今後のお役に立てば幸いです。

関連する問題