Results 1 to 6 of 6

Thread: [RESOLVED] VB Macro --Help!!

  1. #1

    Thread Starter
    New Member
    Join Date
    Mar 2006
    Posts
    4

    Resolved [RESOLVED] VB Macro --Help!!

    Hello,

    I would like to automate the below process by a macro. I am not a programmer. Please help me in this regard.

    I have a .doc file, which is nothing but xml tags. I would like to insert the page numbers into that doc file.

    For example: (before macro runs)

    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="99" id="id_0073010367_001_001131">
    <title page-num="" id="id_0073010367_001_001132">
    <chbe page-num="" id="id_0073010367_001_001133">
    <verb page-num="" id="id_0073010367_001_001134">
    <toce page-num="" id="id_0073010367_001_001137">
    <para page-num="" id="id_0073010367_001_001140">

    <para page-num="100" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">

    <para page-num="101" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">

    This is my doc file. I have some 1000 Pages like this. If you see the above example I have page-num=”numeric or empty”. I want to fill the empty page tag to the respective page number. The empty page-num will be the page number of the previous found page number. It should fill till it finds the page-num is not empty.

    The output should be like this after macro runs…

    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="99" id="id_0073010367_001_001131">
    <title page-num="99" id="id_0073010367_001_001132">
    <chbe page-num="99" id="id_0073010367_001_001133">
    <verb page-num="99" id="id_0073010367_001_001134">
    <toce page-num="99" id="id_0073010367_001_001137">
    <para page-num="99" id="id_0073010367_001_001140">

    <para page-num="100" id="id_0073010367_001_001143">
    <para page-num="100" id="id_0073010367_001_001145">
    <para page-num="100" id="id_0073010367_001_001146">
    <para page-num="100" id="id_0073010367_001_001147">
    <para page-num="100" id="id_0073010367_001_001148">
    <para page-num="100" id="id_0073010367_001_001149">
    <para page-num="100" id="id_0073010367_001_0011453">

    <para page-num="101" id="id_0073010367_001_001143">
    <para page-num="101" id="id_0073010367_001_001145">
    <para page-num="101" id="id_0073010367_001_001146">
    <para page-num="101" id="id_0073010367_001_001147">
    <para page-num="101" id="id_0073010367_001_001148">
    <para page-num="101" id="id_0073010367_001_001149">
    <para page-num="101" id="id_0073010367_001_0011453">

    It should work till end of the file.

  2. #2
    Frenzied Member cssriraman's Avatar
    Join Date
    Jun 2005
    Posts
    1,465

    Re: VB Macro --Help!!

    Hi,

    Here is the code for you:
    VB Code:
    1. Sub Macro1()
    2. '
    3.     Application.ScreenUpdating = False
    4.     Dim intPageNo As Integer
    5.     Dim strTemp As String
    6.    
    7.     With Selection.Find
    8. startFind:
    9.         .ClearFormatting
    10.         .Replacement.ClearFormatting
    11.         .Execute findText:=" page-num=""*""", Forward:=True, Wrap:=wdFindStop, Format:=False, MatchCase:=False, MatchWholeWord:=False, MatchAllWordForms:=False, MatchSoundsLike:=False, MatchWildcards:=True
    12.         If .Found Then
    13.             strTemp = Selection.Text
    14.             If Len(strTemp) > 12 Then
    15.                 intPageNo = FindPageNo(strTemp)
    16.             Else
    17.                 Selection.Text = " page-num=""" & intPageNo & """"
    18.                 Selection.MoveRight
    19.             End If
    20.             GoTo startFind
    21.         End If
    22.         .ClearFormatting
    23.         .Replacement.ClearFormatting
    24.     End With
    25.    
    26. ExitHere:
    27.     Application.ScreenUpdating = True
    28.     Exit Sub
    29. End Sub
    30.  
    31. Function FindPageNo(strTemp As String) As Integer
    32.     Application.ScreenUpdating = False
    33.     FindPageNo = Replace(Replace(strTemp, " page-num=", ""), """", "")
    34.     Application.ScreenUpdating = True
    35. End Function
    CS

  3. #3

    Thread Starter
    New Member
    Join Date
    Mar 2006
    Posts
    4

    Re: VB Macro --Help!!

    Hello Sriraman!

    Thanks a lot!!
    It works really great.

    Thanks once again.

  4. #4

    Thread Starter
    New Member
    Join Date
    Mar 2006
    Posts
    4

    Re: VB Macro --Help!!

    Hi Sriraman,

    I have to change few things in the above code.
    Instead of page numbes as "1,2,3.." some times we also get romman numbers.

    I think we have to use string instead of int, if i am right???
    Can you please modify the code which can also accept roman numbers.

    Thanks in Advance.

  5. #5
    Frenzied Member cssriraman's Avatar
    Join Date
    Jun 2005
    Posts
    1,465

    Re: VB Macro --Help!!

    Yes You are right!

    We need to use string instead of integer. Here is the sample source and its macros for you. Now this will work for number and any strings (roman or something else).

    Source file:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="99" id="id_0073010367_001_001131">
    <title page-num="" id="id_0073010367_001_001132">
    <chbe page-num="" id="id_0073010367_001_001133">
    <verb page-num="" id="id_0073010367_001_001134">
    <toce page-num="" id="id_0073010367_001_001137">
    <para page-num="" id="id_0073010367_001_001140">
    
    <para page-num="100" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="101" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="(a)" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="(i)" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="(A)" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="(I)" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="XX" id="id_0073010367_001_001131">
    <title page-num="" id="id_0073010367_001_001132">
    <chbe page-num="" id="id_0073010367_001_001133">
    <verb page-num="" id="id_0073010367_001_001134">
    <toce page-num="" id="id_0073010367_001_001137">
    <para page-num="" id="id_0073010367_001_001140">
    
    <para page-num="ii" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    
    <para page-num="iii" id="id_0073010367_001_001143">
    <para page-num="" id="id_0073010367_001_001145">
    <para page-num="" id="id_0073010367_001_001146">
    <para page-num="" id="id_0073010367_001_001147">
    <para page-num="" id="id_0073010367_001_001148">
    <para page-num="" id="id_0073010367_001_001149">
    <para page-num="" id="id_0073010367_001_0011453">
    Macro:
    VB Code:
    1. Sub Macro1()
    2. '
    3.     Application.ScreenUpdating = False
    4.     Dim intPageNo As String
    5.     Dim strTemp As String
    6.    
    7.     With Selection.Find
    8. startFind:
    9.         .ClearFormatting
    10.         .Replacement.ClearFormatting
    11.         .Execute findText:=" page-num=""*""", Forward:=True, Wrap:=wdFindStop, Format:=False, MatchCase:=False, MatchWholeWord:=False, MatchAllWordForms:=False, MatchSoundsLike:=False, MatchWildcards:=True
    12.         If .Found Then
    13.             strTemp = Selection.Text
    14.             If Len(strTemp) > 12 Then
    15.                 intPageNo = FindPageNo(strTemp)
    16.             Else
    17.                 Selection.Text = " page-num=""" & intPageNo & """"
    18.                 Selection.MoveRight
    19.             End If
    20.             GoTo startFind
    21.         End If
    22.         .ClearFormatting
    23.         .Replacement.ClearFormatting
    24.     End With
    25.    
    26. ExitHere:
    27.     Application.ScreenUpdating = True
    28.     Exit Sub
    29. End Sub
    30.  
    31. Function FindPageNo(strTemp As String) As String
    32.     Application.ScreenUpdating = False
    33.     FindPageNo = Replace(Replace(strTemp, " page-num=", ""), """", "")
    34.     Application.ScreenUpdating = True
    35. End Function
    Output:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="99" id="id_0073010367_001_001131">
    <title page-num="99" id="id_0073010367_001_001132">
    <chbe page-num="99" id="id_0073010367_001_001133">
    <verb page-num="99" id="id_0073010367_001_001134">
    <toce page-num="99" id="id_0073010367_001_001137">
    <para page-num="99" id="id_0073010367_001_001140">
    
    <para page-num="100" id="id_0073010367_001_001143">
    <para page-num="100" id="id_0073010367_001_001145">
    <para page-num="100" id="id_0073010367_001_001146">
    <para page-num="100" id="id_0073010367_001_001147">
    <para page-num="100" id="id_0073010367_001_001148">
    <para page-num="100" id="id_0073010367_001_001149">
    <para page-num="100" id="id_0073010367_001_0011453">
    
    <para page-num="101" id="id_0073010367_001_001143">
    <para page-num="101" id="id_0073010367_001_001145">
    <para page-num="101" id="id_0073010367_001_001146">
    <para page-num="101" id="id_0073010367_001_001147">
    <para page-num="101" id="id_0073010367_001_001148">
    <para page-num="101" id="id_0073010367_001_001149">
    <para page-num="101" id="id_0073010367_001_0011453">
    
    <para page-num="(a)" id="id_0073010367_001_001143">
    <para page-num="(a)" id="id_0073010367_001_001145">
    <para page-num="(a)" id="id_0073010367_001_001146">
    <para page-num="(a)" id="id_0073010367_001_001147">
    <para page-num="(a)" id="id_0073010367_001_001148">
    <para page-num="(a)" id="id_0073010367_001_001149">
    <para page-num="(a)" id="id_0073010367_001_0011453">
    
    <para page-num="(i)" id="id_0073010367_001_001143">
    <para page-num="(i)" id="id_0073010367_001_001145">
    <para page-num="(i)" id="id_0073010367_001_001146">
    <para page-num="(i)" id="id_0073010367_001_001147">
    <para page-num="(i)" id="id_0073010367_001_001148">
    <para page-num="(i)" id="id_0073010367_001_001149">
    <para page-num="(i)" id="id_0073010367_001_0011453">
    
    <para page-num="(A)" id="id_0073010367_001_001143">
    <para page-num="(A)" id="id_0073010367_001_001145">
    <para page-num="(A)" id="id_0073010367_001_001146">
    <para page-num="(A)" id="id_0073010367_001_001147">
    <para page-num="(A)" id="id_0073010367_001_001148">
    <para page-num="(A)" id="id_0073010367_001_001149">
    <para page-num="(A)" id="id_0073010367_001_0011453">
    
    <para page-num="(I)" id="id_0073010367_001_001143">
    <para page-num="(I)" id="id_0073010367_001_001145">
    <para page-num="(I)" id="id_0073010367_001_001146">
    <para page-num="(I)" id="id_0073010367_001_001147">
    <para page-num="(I)" id="id_0073010367_001_001148">
    <para page-num="(I)" id="id_0073010367_001_001149">
    <para page-num="(I)" id="id_0073010367_001_0011453">
    
    <?xml version="1.0" encoding="utf-8"?>
    <chapter page-num="XX" id="id_0073010367_001_001131">
    <title page-num="XX" id="id_0073010367_001_001132">
    <chbe page-num="XX" id="id_0073010367_001_001133">
    <verb page-num="XX" id="id_0073010367_001_001134">
    <toce page-num="XX" id="id_0073010367_001_001137">
    <para page-num="XX" id="id_0073010367_001_001140">
    
    <para page-num="ii" id="id_0073010367_001_001143">
    <para page-num="ii" id="id_0073010367_001_001145">
    <para page-num="ii" id="id_0073010367_001_001146">
    <para page-num="ii" id="id_0073010367_001_001147">
    <para page-num="ii" id="id_0073010367_001_001148">
    <para page-num="ii" id="id_0073010367_001_001149">
    <para page-num="ii" id="id_0073010367_001_0011453">
    
    <para page-num="iii" id="id_0073010367_001_001143">
    <para page-num="iii" id="id_0073010367_001_001145">
    <para page-num="iii" id="id_0073010367_001_001146">
    <para page-num="iii" id="id_0073010367_001_001147">
    <para page-num="iii" id="id_0073010367_001_001148">
    <para page-num="iii" id="id_0073010367_001_001149">
    <para page-num="iii" id="id_0073010367_001_0011453">
    Last edited by cssriraman; Apr 12th, 2006 at 12:19 PM.
    CS

  6. #6
    Frenzied Member cssriraman's Avatar
    Join Date
    Jun 2005
    Posts
    1,465

    Re: VB Macro --Help!!

    When you have received an answer to your question, please mark it as resolved using the Thread Tools menu.
    CS

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width