2016-11-01 9 views
4

単語文書内のすべての表のすべての罫線の色を一度に変更するマクロを作成しようとしています。これを行うに単語vbaのすべての表のすべての罫線の色を変更してください

私の試みは、私のテーブルで唯一の上部と下部の境界線を変更します。

Sub ChangeTableBordersColors() 
Dim mycolor As WdColor 
Dim myTable As Table 
mycolor = wdColorRed 
For Each myTable In ActiveDocument.Tables 
With myTable 
.Borders(wdBorderTop).Color = mycolor 
.Borders(wdBorderBottom).Color = mycolor 
.Borders(wdBorderHorizontal).Color = mycolor 
.Borders(wdBorderVertical).Color = mycolor 
.Borders(wdBorderLeft).Color = mycolor 
.Borders(wdBorderRight).Color = mycolor 
End With 
Next 
End Sub 

誰もがこの問題を解決する方法を提案することができますか?

+0

私はこれを複製することはできません - あなたのコードは、私のためだけで正常に動作します。 – Comintern

答えて

1

私は完全な仕組みを持っていませんでしたが、一部の罫線が個別に設定されているとコードが機能しないようです。 LineStyleとLineWidthを最初にリセットしてから、色が元の状態に戻ります。
あなたはこれに、これをダウン短縮することができます。

With myTable 
     .Borders.InsideLineStyle = wdLineStyleSingle 
     .Borders.InsideLineWidth = wdLineWidth025pt 
     .Borders.InsideColor = mycolor 

     .Borders.OutsideLineStyle = wdLineStyleSingle 
     .Borders.OutsideLineWidth = wdLineWidth025pt 
     .Borders.OutsideColor = mycolor 
    End With 
+0

ありがとうございます - それは問題である必要があります - 私が持っているドキュメントは、個別に設定された異なる線種を使用しています。私は個々に設定された線のスタイルを失うことなく、すべての色を変更するマクロを使用したいと思います。スタイルと色を一緒に設定する必要があるようです。 – TimF

1

はあなたにそんなにKekuSemauありがとう - あなたは、問題は私が解決策を見ることができたものを指摘したら。私の間違いは、それが個別に国境を設定したときにテーブル全体を扱おうとすることでした。私は個々のセルを個別に扱う必要がありました。

次のような変形は、(ビット醜いと恐ろしく遅いものの!)働いた:

Sub ChangeTableBordersColors() 
Dim mycolor As WdColor 
Dim aTable As Table 
Dim i As Integer 
Dim j As Integer 
Dim Row As Integer 
Dim Column As Integer 

mycolor = wdColorRed 
For Each aTable In ActiveDocument.Tables 
i = aTable.Rows.Count 
j = aTable.Columns.Count 
For Row = 1 To i 
For Column = 1 To j 
    With aTable.Cell(Row, Column) 
    .Borders(wdBorderTop).Color = mycolor 
    .Borders(wdBorderBottom).Color = mycolor 
    .Borders(wdBorderLeft).Color = mycolor 
    .Borders(wdBorderRight).Color = mycolor 
    End With 
Next Column 
Next Row 
Next 
End Sub 
関連する問題