J'ai tellement de types de tables dans mon mot doc. À partir de ces cellules de couleur grises ne sont pas utilisables, je dois donc le cacher (ne voulez pas la supprimer). Les tableaux Nombre de lignes et de colonnes ne sont toujours pas identiques. Donc, je ne sais pas comment cacher les cellules de la table qui ont une couleur de fond comme gris du document MS Word utilisant VBA Macros ????
3 Réponses :
Reconnaître toutes sortes de "gris", vous pouvez comparer des parties rouge / vert / bleu de la couleur d'arrière-plan. S'ils sont identiques, la couleur est noire (toutes zéro), blanche (tous les 255) ou gris.
Si gris, vous pouvez cacher toute la table en cachant sa police. P>
Premier Exemple (cacher la table entière en fonction de l'arrière-plan de la première cellule): p> second exemple: cacher chaque rangée sur la base de la première cellule de la ligne: P> Sub ClearTableRowsBGColor()
Dim t As Table
Dim tableRow As Row
Dim SearchColor As Long
Dim r As Byte, g As Byte, b As Byte
For Each t In ActiveDocument.Tables
For Each tableRow In t.Rows
SearchColor = tableRow.Range.Cells(1).Shading.BackgroundPatternColor
If SearchColor < 0 Then SearchColor = &H1000000 + SearchColor
r = SearchColor Mod 256 ' red part
g = SearchColor \ 256 Mod 256 ' green part
b = SearchColor \ (2 ^ 16) Mod 256 ' blue part
If (r = g) And (g = b) Then ' all parts identical?
If r > 0 And r < 255 Then ' neither black nor white?
tableRow.Range.Font.Hidden = True ' hide grey
End If
End If
Next tableRow
Next t
End Sub
Le moyen le plus simple, en supposant que vous ayez utilisé l'une des nuances de gris standard, est d'utiliser le code comme: Le code ci-dessus suppose que l'ombrage est de 25% gris. Autre possibilité est 50% gris, ou WDGRAY50. Toute autre ombrage à l'échelle grise nécessite un code plus complet, tel que Asger Publié. En définissant .font.Hedid = true, vous pouvez basculer la visibilité des lignes cachées sur le bouton / désactivé via le bouton ¶ sur l'onglet Home du ruban. P> Note: strong> Le code ci-dessus suppose qu'il n'y a pas de cellules verticalement fusionnées / divisées dans les tables; S'il y en a, vous devrez fournir plus de détails sur les structures de table. P> p>
HII, ma table a une fusion verticalement des cellules. Comment coder pour cela?
@neharaut Comme je l'ai noté dans ma réponse, vous devrez fournir plus de détails sur les structures de table. Par exemple, sont des colonnes entières (ou toutes sauf une ligne d'en-tête) fusionnée. Quelles colonnes sont affectées? Modifiez votre message d'origine pour fournir les détails.
À propos du meilleur que vous obtiendrez avec des tables telles que votre spectacle de captures d'écran est quelque chose dans le sens de la macro suivante.
Sub Demo() Application.ScreenUpdating = False Dim Tbl As Table, c As Long With ActiveDocument For Each Tbl In .Tables With Tbl.Range For c = 1 To .Cells.Count With .Cells(c).Range If .Shading.BackgroundPatternColorIndex = wdGray25 Then With .ParagraphFormat .SpaceBefore = 0 .SpaceAfter = 0 .LineSpacingRule = wdLineSpaceExactly .LineSpacing = 0.7 End With .Font.Hidden = True End If End With Next End With Next End With Application.ScreenUpdating = True End Sub
@neharaut Dans ce cas, vous devez marquer les bonnes réponses pour les tables avec et sans cellules fusionnées pour répondre à la question.
Si vous avez fusionné verticalement des cellules, vous ne pouvez masquer que Tableaux complets i> car vous ne pouvez pas adresser chaque ligne individuellement. S'il vous plaît considérer pour tester mon premier exemple. En outre, il n'est pas possible d'avoir toutes les cellules blanches visibles sans aucun gris visible, car mot ne peut pas cacher partiellement des rangées sans suppression.