次のマクロを使用して、Word 文書を反復処理し、最初の表を除くすべての表から色を削除します。
これらのドキュメントに差し込みフィールドを自動入力するアプリケーションのフォーム保護の問題により、フォーム フィールドでは絶対に機能しないドキュメントがあります。したがって、次善の策は、まだ塗りつぶす必要があるものをシェーディングでマークし、ドキュメントを印刷する前にシェーディングを削除することでした. ただし、このコードがドキュメントを反復処理すると、特定のテーブルの境界線の一部が削除されます。
私は間違いなくこれを望んでいません。シェーディングを削除したいだけです。なぜこれを行っているのかわからないので、誰かがそれについて何か洞察を持っているなら、それは最も役に立ちます。そうでない場合は、このマクロを調整して、白以外の背景色のセルのみを変更できれば、それも機能します。
ネストされたループのいくつかのバリエーションを試しましたが、そのように実行することはできませんでした。
Sub decolordocument()
Dim tbl As Table
Dim first As Boolean
first = True
For Each tbl In ActiveDocument.Tables
If first Then
first = False
Else
tbl.Shading.BackgroundPatternColor = wdColorWhite
End If
Next
MsgBox "Shaded cells in tables have been updated."
End Sub
私もこのコードを試してみましたが、境界線が削除されたのと同じ効果が得られました:
Sub decolordocument()
Dim tbl As Table
Dim tblCount As Long
Dim i As Long
Dim first As Boolean
tblCount = ActiveDocument.Tables.Count
For i = 2 To tblCount
With ActiveDocument.Tables(i).Shading
.BackgroundPatternColor = wdColorWhite
End With
Next
MsgBox "Shaded cells in tables have been updated."
End Sub
編集:これらのテーブルの境界線が失われる具体的な原因はまだわかりませんが、特定の方法でテーブルを分割すると、境界線が失われないことがわかりました。特定の組み合わせのみが国境の喪失を引き起こすように思われるため、これを特定するために最善を尽くしましたが、うまくいきませんでした。しかし、少なくとも私はうまくいくものを持っています。最初に要求されたように、個々のセルを反復処理するマクロを誰かが提供できる場合、それはおそらく後ろポケットに入れておくのに悪い選択肢ではないでしょう.