#1
|
|||
|
|||
remove shape fill all text boxes
Hello,
can someone help me with a macro to remove the shape fill of all text boxes in a document? Even when they are in a group. Thank you! |
#2
|
||||
|
||||
This should get you started
Code:
Sub EmptyShapes() Dim aShp As Shape, aShp2 As Shape For Each aShp In ActiveDocument.Shapes If aShp.TextFrame.HasText Then aShp.Fill.Visible = False ElseIf aShp.Type = msoGroup Then For Each aShp2 In aShp.GroupItems If aShp2.TextFrame.HasText Then aShp2.Fill.Visible = False End If Next aShp2 End If Next aShp End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
Hey,
Thanks a lot! i try to run it, but i get runtime error '-2147467263 (80004001)': the specified value is out of range. the problem seems to be in the 4th line: "if a Shp.textframe......... Do you know what the problem could be? Thank you! |
#4
|
||||
|
||||
There are different types of shapes which could appear in your document. I would assume your document has some shapes that don't have text frames - perhaps they are graphics imported from other programs. You will need to test for those types so you can exclude them from the recolouring. This amended code will stop the macro so you can examine the problem shape and work out what is causing the error. If you can work out what type of shapes you want the code to address/avoid then you can recode the macro to do that.
Code:
Sub EmptyShapes() Dim aShp As Shape, aShp2 As Shape On Error GoTo ErrCatcher For Each aShp In ActiveDocument.Shapes If aShp.TextFrame.HasText Then aShp.Fill.Visible = False ElseIf aShp.Type = msoGroup Then For Each aShp2 In aShp.GroupItems If aShp2.TextFrame.HasText Then aShp2.Fill.Visible = False End If Next aShp2 End If Next aShp Application.ScreenRefresh Exit Sub ErrCatcher: aShp.Select MsgBox "Error: " & Err.Number & " " & Err.Description & vbCr & "Shape type: " & aShp.Type End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#5
|
|||
|
|||
Hey, thanks again.
im using word 2016. When I try this macro, i get the following error: |
#6
|
||||
|
||||
Shape Type 3 is a chart so I've amended the code to avoid doing anything to them
Code:
Sub EmptyShapes2() Dim aShp As Shape, aShp2 As Shape On Error GoTo ErrCatcher For Each aShp In ActiveDocument.Shapes Select Case aShp.Type Case msoChart 'do nothing Case msoGroup For Each aShp2 In aShp.GroupItems If aShp2.TextFrame.HasText Then aShp2.Fill.Visible = False End If Next aShp2 Case Else If aShp.TextFrame.HasText Then aShp.Fill.Visible = False End If End Select Next aShp Application.ScreenRefresh Exit Sub ErrCatcher: aShp.Select MsgBox "Error: " & Err.Number & " " & Err.Description & vbCr & "Shape type: " & aShp.Type End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#7
|
|||
|
|||
works perfectly, thank you!
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Fill / Animate Arc Shape | Ds7 | PowerPoint | 0 | 05-10-2016 01:53 AM |
How to remove all pictures but keep text boxes | gn4619 | Word VBA | 2 | 10-22-2015 08:19 PM |
Using variables to fill different boxes | snoopo71 | PowerPoint | 1 | 12-28-2014 08:43 AM |
cropping a picture fill shape | Gerbutland | PowerPoint | 5 | 04-06-2014 01:23 AM |
Change accent theme color used as shape fill (not RGBs) | preetidb | PowerPoint | 4 | 12-30-2013 03:22 PM |