Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / October 2006

Tip: Looking for answers? Try searching our database.

Table not inserting correctly

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
NYSA-HD - 11 Sep 2006 20:19 GMT
I am running the following code to insert a table into a document.  My
problem is that every so often the table inserts strangely and runs off the
page. I have chalked it up to a word bug, but it is getting annoying.  Has
anyone else had this problem when inserting tables using code.  Is there
anything I can change below that might eliminate this seemly random problem.  
Is there a line of code that will correct this issue?
------------------------------

Public Sub InsertVotes()
   If FindVar("&VOTES") Then Selection.Delete unit:=wdCharacter, Count:=1
   If (pubYEAS <> "" And pubYEAS <> "00") Or (pubNAYS <> "" And pubNAYS <>
"00") Then
       InsertVoteBox
   Else
' Do nothing if no vote taken
       Selection.Delete unit:=wdCharacter, Count:=1
   End If
End Sub
Public Sub InsertVoteBox()
   Selection.TypeParagraph
   ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2,
NumColumns:= _
       2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
       wdAutoFitFixed
   With Selection.Tables(1)
       .PreferredWidthType = wdPreferredWidthPoints
       .PreferredWidth = InchesToPoints(0.67)
       .Columns(1).PreferredWidth = InchesToPoints(0.42)
       .Columns(2).PreferredWidth = InchesToPoints(0.25)
       .Rows.SetLeftIndent LeftIndent:=InchesToPoints(3),
RulerStyle:=wdAdjustNone
       If .Style <> "Table Grid" Then
           .Style = "Table Grid"
       End If
       .ApplyStyleHeadingRows = True
       .ApplyStyleLastRow = True
       .ApplyStyleFirstColumn = True
       .ApplyStyleLastColumn = True
       .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
       .Borders(wdBorderRight).LineStyle = wdLineStyleNone
       .Borders(wdBorderTop).LineStyle = wdLineStyleNone
       .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
       .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
       .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
       .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
       .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
       .Borders.Shadow = False
' Added these characteristics: 7/26/06
       .TopPadding = InchesToPoints(0)
       .BottomPadding = InchesToPoints(0)
       .LeftPadding = InchesToPoints(0)
       .RightPadding = InchesToPoints(0)
   End With
   Selection.TypeText Text:="YEAS"
   Selection.MoveRight unit:=wdCell
   Selection.TypeText Text:=pubYEAS
   Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
   Selection.MoveRight unit:=wdCell
   Selection.TypeText Text:="NAYS"
   Selection.MoveRight unit:=wdCell
   Selection.TypeText Text:=pubNAYS
   Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
   Selection.MoveRight unit:=wdCharacter, Count:=2
End Sub
Jezebel - 11 Sep 2006 23:38 GMT
Your code is a case study in why you can't create reliable macros using the
macro recorder. Hard to be precise about how to fix the problem without a
better description of what the problem actually is ('inserts strangely'
doesn't really tell us much); but the likely problem is that the table is
inserted wherever the selection is at the time --

Selection.TypeParagraph
ActiveDocument.Tables.Add Range:=Selection.Range

If the selection is somewhere odd (like within a table or textbox), then
you're going to get behaviour accordingly. It could also be affected by the
style of that paragraph.

1. Re-write your code without using the Selection object. Be specific about
where you want the table inserted, eg to put it at the end of document --

Dim pRange as Word.Range
Dim pTable as Word.Table

Set pRange = ActiveDocument.Range(ActiveDocument.End - 1,
ActiveDocument.End - 1)
Set pTable = ActiveDocument.Tables.Add(Range:=pRange, NumRows:=2,
NumColumns:=2 )
With pTable
   .Columns(1).PreferredWidth = InchesToPoints(0.42)
   :

2. Since you're applying a table style, you don't need any of the table
formatting instructions -- make these as part of the table style.

>I am running the following code to insert a table into a document.  My
> problem is that every so often the table inserts strangely and runs off
[quoted text clipped - 62 lines]
>    Selection.MoveRight unit:=wdCharacter, Count:=2
> End Sub
Russ - 01 Oct 2006 02:26 GMT
NYSA-HD,
And the judicious use of section breaks can help with keeping formatting
changes under control within a document.
http://office.microsoft.com/en-au/assistance/HA011876021033.aspx#4
http://word.mvps.org/FAQS/Formatting/WorkWithSections.htm

> Your code is a case study in why you can't create reliable macros using the
> macro recorder. Hard to be precise about how to fix the problem without a
[quoted text clipped - 92 lines]
>>    Selection.MoveRight unit:=wdCharacter, Count:=2
>> End Sub

Signature

Russ

drsmN0SPAMikleAThotmailD0Tcom.INVALID

 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.