Re: Macro for multiple Table --> Text conversion

From: Jay Freedman (jay.freedman_at_verizon.net)
Date: 02/02/05


Date: Wed, 2 Feb 2005 17:14:36 -0500

Hi Pat,

Yes, that would work. At least it would execute the same loop body the same
number of times.

When you have two constructions that both get the same results, then it's
reasonable to ask which one is "better", either noticeably faster or easier
to understand/maintain. In this case it could be a draw, but we'd have to
run both of them against the same file with a large number of tables to be
sure. I think the For..Next might run a bit faster than the While..Wend,
because the loop-ending condition of the For loop is evaluated only once.
But it very much depends on how the VBA developers implemented the two kinds
of loops in machine language.

-- 
Regards,
Jay Freedman
Microsoft Word MVP          FAQ: http://word.mvps.org
Pat Garard wrote:
> Good One Jay!
>
> Of course I never TESTED it did I? {:-{
>
> How about....
>
> Sub TablesToText()
>     While ActiveDocument.Tables.Count
>         ActiveDocument.Tables(1).ConvertToText _
>             Separator:=wdSeparateByTabs, _
>             NestedTables:=True
>     Wend
> End Sub
>
> .....? [:-}
>
> "Jay Freedman" <jay.freedman@verizon.net> wrote in message
> news:utd001pgier0lolsp0kaepp7k34mf8bmr2@4ax.com...
>> Hi Pat,
>>
>> That's almost correct. As is, though, it will convert every second
>> table in the document and then stop with an error. The problem is
>> that after the first table is converted, the formerly second table
>> becomes .Tables(1). But by then intX has become 2, and the next
>> conversion affects what used to be the third table but is now
>> .Tables(2). This will continue until all the originally odd-numbered
>> tables have been converted, and then intX will reach a value greater
>> than the number of tables remaining in the document and an error
>> will stop the macro.
>>
>> The easiest fix is to change ActiveDocument.Tables(intX).Select to
>> ActiveDocument.Tables(1).Select, so each conversion affects the
>> current first table of the document. Since the loop condition
>> ActiveDocument.Tables.Count is evaluated only during the first pass,
>> it'll give you the correct number of passes.
>>
>> Besides that, there's no need to select the table before converting
>> it. Your code will run faster (because there won't be any screen
>> redrawing) if you write the macro like this:
>>
>> Sub TablesToText()
>> Dim intX As Integer
>>    For intX = 1 To ActiveDocument.Tables.Count
>>        ActiveDocument.Tables(1).ConvertToText _
>>            Separator:=wdSeparateByTabs, _
>>            NestedTables:=True
>>    Next
>> End Sub
>>
>> --
>> Regards,
>> Jay Freedman
>> Microsoft Word MVP         FAQ: http://word.mvps.org
>>
>> On Wed, 2 Feb 2005 09:11:06 +1100, "Pat Garard"
>> <apgarardATbigpondDOTnetDOTau> wrote:
>>
>>> G'Day David,
>>>
>>> The following Macro will go through a document and
>>> convert all tables to text using tab separators.
>>>
>>>    Sub TablesToText()
>>>    Dim intX As Integer
>>>        For intX = 1 To ActiveDocument.Tables.Count
>>>            ActiveDocument.Tables(intX).Select
>>>            Selection.Rows.ConvertToText _
>>>                Separator:=wdSeparateByTabs, _
>>>                NestedTables:=True
>>>        Next
>>>    End Sub
>>>
>>> Cut and Paste as is.
>>> --
>>> Regards,
>>> Pat Garard
>>> Melbourne, Australia
>>> _______________________
>>>
>>> "David Gareau via OfficeKB.com" <forum@OfficeKB.com> wrote in
>>> message news:0b278770ba7a4452afe8ea7ecc1c766d@OfficeKB.com...
>>>> I have some files that are filled with tables and cause me to have
>>>> to print
>>>> 2-3x as much, I want to convert the tables to text, but there's
>>>> 100+ sometimes and I don't want to do each individually, I have
>>>> read here that
>>>> the ONLY option is a macro, is this true?  If so, any links to
>>>> such a macro, or ideas on how to make it?  Thanks
>>>> david
>>>>
>>>> --
>>>> Message posted via http://www.officekb.com


Relevant Pages

  • Re: Macro for multiple Table --> Text conversion
    ... tables remaining in the document and an error will stop the macro. ... so each conversion affects the ... > Sub TablesToText() ... > Dim intX As Integer ...
    (microsoft.public.word.tables)
  • Re: Macro for multiple Table --> Text conversion
    ... But by then intX has become 2, and the next conversion ... > tables remaining in the document and an error will stop the macro. ... > Sub TablesToText() ... >>Pat Garard ...
    (microsoft.public.word.tables)
  • Re: PC Word Macro Not Working in Mac Word
    ... I wrote my original in Mac Word, ... .Execute Replace:=wdReplaceAll ... Do ' A post-test loop! ... I did a test macro with basically just the code you ...
    (microsoft.public.mac.office.word)
  • RE: Loop Training: Password Finder
    ... 'The cycles on your g loop would be phenominal in your case. ... Dim Solution As String ... I have a macro below, ... > Exit Sub ...
    (microsoft.public.excel.programming)
  • RE: Word 2003 crashes with 2003 vba macro
    ... I found out that the loop in this case never ... One of the ways in which a macro can cause Word to hang is by having a loop, ... As the cycles of the loop proceed, pos1 increases until the cursor is ... Dim i As Integer, pos As Single, pos1 As Integer ...
    (microsoft.public.word.vba.general)

Loading