#1
|
|||
|
|||
Formatting macro
Using Word 2007 in a corporate environment, my colleague DTPs and I regularly have to reformat tables to our template design. Although I have stored two designs as Quick Parts and, with one internal borders exception, can apply this design, I am trying to create a macro to format any existing table this way. I am only somewhat familiar with VBA and hope someone can solve this riddle:
I have no luck starting the macro recorder and then using the New Table Style dialogue. The borders come out much too thick and the dialogue insists on reopening after the table is formatted when I run the macro. Therefore, have recorded my macro with an unformatted table in place, going through steps to format it by selection. When I run the macro, however, it calls up debug and points to the first diagonal borders line in the macro, which I have highlighted in bold blue below. I have no idea what the problem is. Here's the macro. Any help will be most appreciated. Sub KTableH() ' ' KTableH Macro ' ' Selection.Tables(1).Select With Selection.Tables(1) With .Borders(wdBorderLeft) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderRight) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderTop) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderBottom) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderHorizontal) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderVertical) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone .Borders.Shadow = False End With With Options .DefaultBorderLineStyle = wdLineStyleSingle .DefaultBorderLineWidth = wdLineWidth050pt .DefaultBorderColor = 8284228 End With Selection.MoveLeft Unit:=wdCharacter, Count:=1 Selection.SelectRow Selection.Shading.Texture = wdTextureNone Selection.Shading.ForegroundPatternColor = wdColorAutomatic Selection.Shading.BackgroundPatternColor = 8284228 With Selection.Cells With .Borders(wdBorderLeft) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderRight) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderTop) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderBottom) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = 8284228 End With With .Borders(wdBorderVertical) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = -603914241 End With .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone .Borders.Shadow = False End With With Options .DefaultBorderLineStyle = wdLineStyleSingle .DefaultBorderLineWidth = wdLineWidth050pt .DefaultBorderColor = -603914241 End With End Sub |
#2
|
||||
|
||||
Hi Ulodesk,
When posting code, please use code tags. Whilst I'm not sure what your table design goals are, the following appears to replicate what your code was doing: Code:
Sub KTableH() Dim i As Integer With Options .DefaultBorderLineStyle = wdLineStyleSingle .DefaultBorderLineWidth = wdLineWidth050pt .DefaultBorderColor = 8284228 End With With Selection.Tables(1) For i = 1 To 8 Select Case i Case 1, 3 - 8 With .Borders(i) .LineStyle = Options.DefaultBorderLineStyle .LineWidth = Options.DefaultBorderLineWidth .Color = Options.DefaultBorderColor End With Case Else With .Borders(i) .LineStyle = wdLineStyleNone End With End Select Next i With .Rows(1).Range With .Shading .Texture = wdTextureNone .ForegroundPatternColor = wdColorAutomatic .BackgroundPatternColor = 8284228 End With .Borders.Shadow = False With .Cells.Borders(wdBorderVertical) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth050pt .Color = -603914241 End With End With End With With Options .DefaultBorderLineStyle = wdLineStyleSingle .DefaultBorderLineWidth = wdLineWidth050pt .DefaultBorderColor = -603914241 End With End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Missing borders
Paul,
Thanks for your reply. I read your posts often and continue to learn. I'll have to look up tag use, since I don't know what you mean by using them when posting code. In this case, the code you supplied formats only the header row fill and internal vertical borders, albeit in the correct colors. The table we use actually has half-point borders of the same color (68/104/126) on all cells (the white internals in the header row excepted), and the font in the header row should be white and boldface. Anyway, it was just an idea. I'm always looking for improved ways to learn and to encourage our staff to use the shortcuts Word offers. At some point, perhaps I'll find the time to learn VBA. Would that Word had the kind of power with tables that InDesign has. Cordially, Ulodesk |
#4
|
||||
|
||||
Hi Ulodesk,
To manage font attributes, you should create a Style with them (probably a paragraph Style in this case) and apply that Style to the cells concerned. When you say: Quote:
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
Tt throughs an Syntax error - Sub Ktable not defined.
|
#6
|
||||
|
||||
That suggests you've added the code somewhere it shouldn't be (like inside another sub)!!
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#7
|
|||
|
|||
i am just creating a new module and placing in that.
|
#8
|
||||
|
||||
The macro runs fine for me. I simply created a new module, copied the code from post #2 & pasted it into the new module, created a table in the document, then ran the macro. No errors.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#9
|
|||
|
|||
Thanks mate, I tried again and this time it worked. I must have done something wrong earlier.
Regards Last edited by macropod; 04-10-2012 at 06:36 PM. Reason: Stripped off content for separate thread |
#10
|
||||
|
||||
Please don't add new requests to other peoples' threads. I've split your new request off to a separate thread.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Help with a macro | Takket | Word VBA | 2 | 03-28-2014 04:58 PM |
need a macro that does the following | atomsk | Word VBA | 0 | 07-05-2010 07:29 AM |
Please help | Jarrod | Word | 1 | 06-05-2010 06:31 AM |
Macro help | NEHicks503 | Excel | 0 | 04-16-2010 07:29 AM |
Formatting Help | caution5697 | Word | 3 | 04-22-2009 11:53 PM |