![]() |
|
#1
|
|||
|
|||
|
Hi Folks,
Another trip to the well for a Word VBA Newb... I have VBA code which opens a Word instance and programmatically populates the document with tables. However, each table must have a title, so my code is: Code:
Selection.Text = " Product Specifications"
Selection.Font.Name = "calibri"
Selection.Font.Size = 16
Selection.Font.Bold = True
Selection.EndKey Unit:=wdStory
'Now add table...
.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
Code:
Selection.Text = " Product Specifications"
Selection.Font.Name = "calibri"
Selection.Font.Size = 16
Selection.Font.Bold = True
Selection.Font.Underline = wdUnderlineSingle
Selection.EndKey Unit:=wdStory
'Now add table...
.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
Of course, when I do, everything in the document after that line is underlined. I only want the titles underlined. What am I doing wrong, please? Thanks, -John |
|
#2
|
|||
|
|||
|
Ooops, I may have posted some crappy code before. If you're trying to just underline that word, maybe just the use find and replace to underline it? That should only underline that title:
Code:
With Selection.Find
.Text = " Product Specifications"
.Replacement.Text = " Product Specifications"
.Replacement.Font.Underline = True
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
|
|
#3
|
|||
|
|||
|
Quote:
I thought of doing a find and replace, but I think it will be time-consuming. The report is dynamic, generated on the fly by a definition which drives it. It may insert 10 tables, each with it own unique table title. Each title must be underlined. I would like to underline each title at the time the title is inserted but before the table is inserted. Thoughts? Thanks, -John |
|
#4
|
|||
|
|||
|
I'm afraid I can't help you
, I'm still somewhat of a novice myself.Bump for a better answer- |
|
#5
|
||||
|
||||
|
Create or modify a paragraph style that has the characteristics you want, assign it to a keyboard shortcut (or use the ribbon) and apply it to the paragraph in question.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#6
|
|||
|
|||
|
Quote:
The code creates title text which I want underlined, followed below by some more text (not underlined) or a table. I am trying to underline (by code) the title text only, immediately after creating it or as it is created. Thanks, -John |
|
#7
|
||||
|
||||
|
My point was that styles are the best way of formatting text. i.e. format (say) Heading 2 style to be 16 point Calibri Bold, Underlined and apply that to the paragraph that is the table title.
Using VBA you have to identify the variable texts to be formatted and you have not explained enough to be able to do that however .... If the table title is the paragraph immediately before each table then Code:
Sub U_LineTableTitles()
Dim oRng As Range
Dim oTable As Table
For Each oTable In ActiveDocument.Tables
Set oRng = oTable.Range.Previous.Paragraphs(1).Range
With oRng
.Font.Name = "Calibri"
.Font.Size = 16
.Font.Bold = True
.Font.Underline = wdUnderlineSingle
'Or instead of the font commands
'.Style = "Heading 2"
.Collapse 0
End With
Next oTable
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#8
|
|||
|
|||
|
Quote:
Having said that, I do not quite grasp the paragraph method. When I use a paragraph to separate text from the table (Selection.TypeParagraph), I get a blank line; which I do not want. So I have: Code:
Selection.TypeParagraph
'Product Specifications
Selection.Text = " Product Specifications"
Selection.Font.Name = "calibri"
Selection.Font.Size = 16
Selection.Font.Bold = True
'Selection.Font.Underline = wdUnderlineSingle
Selection.EndKey Unit:=wdStory
.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
With .Tables(x)
Obviously, I haven't tried it yet. From my tardy response to your kind advice, you can see I have been pulled in other directions at work right now. I will try your method and hopefully my thought that I haven't closed the paragraph is incorrect. I would appreciate any explaination of the TypeParagraph method and its proper use... Thank you, -John |
|
#9
|
||||
|
||||
|
TypeParagraph will insert a paragraph break. You don't need an extra one. There will be one at the end of the paragraph before your table. If you want more space add it to the paragraph.
It is better to set ranges and work with ranges and name the tables if you wish to process them e.g. Code:
Dim oRng As Range
Dim oTable As Table
Set oRng = Selection.Range
With oRng
'Product Specifications
.Text = " Product Specifications"
.Font.Name = "Calibri"
.Font.Size = 16
.Font.Bold = True
.Collapse 0 'collapse the range to its end
'Insert a table at the range
Set oTable = .Tables.Add(Range:=oRng, NumRows:=3, _
NumColumns:=4, _
DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitFixed)
.End = oTable.Range.End + 1 'set the end of the range to just beyond the table
'do stuff with otable
.Collapse 0 'collapse the range to its end
'Add another heading
.Text = " Another heading"
.Font.Name = "Calibri"
.Font.Size = 16
.Font.Bold = True
.Collapse 0 'collapse the range to its end
'Insert a table at the range
Set oTable = .Tables.Add(Range:=oRng, NumRows:=3, _
NumColumns:=4, _
DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitFixed)
.End = oTable.Range.End + 1 'set the end of the range to just beyond the table
'do stuff with otable
.Collapse 0 'collapse the range to its end
.Select 'moves the cursor to the end of the table
End With
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
#10
|
|||
|
|||
|
I never posted a reply.
Thank you Graham. -John |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Replacing a comment with underline or other formatting (or adding that formatting to commented text) | paulkaye | Word | 4 | 05-16-2016 05:38 AM |
Is there a way of having text automatically inserted based on the selection of other text?
|
MiniMum97 | Word | 2 | 04-12-2016 06:09 AM |
| Copy Underline text from Word and Paste into excel | rfaris | Excel Programming | 7 | 10-05-2015 05:56 AM |
Select text to be underline and bold
|
ksigcajun | Word VBA | 1 | 03-16-2015 07:51 PM |
| How to remove the UNDERLINE from a hyperlink text? | Learner7 | PowerPoint | 3 | 05-17-2010 09:35 PM |