![]() |
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
![]() |
![]() |
|||
| Welcome
to Tech Support Forum home to more then 136,000 problems solved. Issues
have included: Spyware, Malware, Virus Issues, Windows, Microsoft,
Linux, Networking, Security, Hardware, and Gaming Getting your
problem solved is as easy as: 1. Registering for a free account 2. Asking your question 3. Receiving an answer Registered members: * See fewer ads. * And much more..
|
| Want to know how to post a question? click here | Having problems with spyware and pop-ups? First Steps |
|
|||||||
| Microsoft Office support MS Office support forum |
![]() |
|
|
Thread Tools |
|
|
#1 (permalink) |
|
Registered User
Join Date: Jul 2008
Posts: 1
OS: Win XP
|
Macro Paragraph Style
Hello All,
I have text having some particular style in a page while using Macro. The word document has about 90 pages. The text having style starts from 9th page. So I reach 9th page and read the first text having the style and set it as header.There are some more text's having same style on same page. My problem is that I have to jump to next page to select the first text having style and set as header while ignoring other text's that foloow on the same page. Is there a solution by using Paragraph? As it sets all the text's of the same page. Here is my function below: Function setCIHeader() Dim doc As Document Dim objParagraph As Paragraph 'Dim pgno As Integer Set doc = Documents.Open(ActiveDocument.path & "\cumindex.chrono.en.doc") doc.Activate Selection.GoTo What:=wdGoToPage, Which:=wdGoToPrevious, count:=10 pgno = getActualCurrentPageNo 'Dim n As Integer n = 8 Do While pgno < n pgno = getActualCurrentPageNo goToNextPage Loop 'Do While pgno >= 8 'Loop 'For Each itm In doc.ActiveWindow.Application.ActiveDocument.Paragraphs For Each objParagraph In ActiveDocument.Paragraphs 'goToNextPage With objParagraph If objParagraph.style = "Chrono.conclusionyear" Then 'MsgBox (objParagraph.style) .Range.Select 'goToPreviousPage Selection.MoveUp Unit:=wdLine, count:=1 'Selection.InsertBreak Type:=wdSectionBreakContinuous 'Selection.MoveDown Unit:=wdLine, count:=1 'goToNextPage ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _ LinkToPrevious 'Selection.WholeStory 'Selection.delete Unit:=wdCharacter, count:=1 Selection.MoveDown Unit:=wdScreen, count:=1 MsgBox (Trim(objParagraph.Range.text)) ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader Selection.InsertAfter (vbLf) Selection.TypeText text:=Trim(objParagraph.Range.text) 'Selection.MoveDown Unit:=wdScreen, count:=1 'Selection.MoveDown Unit:=wdLine, count:=10 'ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter 'Selection.MoveDown Unit:=wdLine, count:=3 'n = getActualCurrentPageNo + 1 ActiveWindow.ActivePane.View.NextHeaderFooter Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext, count:=1 n = n + 1 Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, count:=n 'Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext, count:=2 'objParagraph.style = Nothing 'Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext 'ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader 'If Selection.HeaderFooter.IsHeader = True Then 'Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _ 'LinkToPrevious 'Else ' ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader 'End If 'Exit Function End If End With Application.StatusBar = "Setting Header in pages...Please Wait.." Next doc.Close savechanges:=wdSaveChanges Application.StatusBar = "Done..." 'Loop ''New R&D End Function |
|
|
|
|
|
#2 (permalink) |
|
Registered User
Join Date: May 2008
Location: Baltimore, Maryland
Posts: 97
OS: Windows XP SP3
|
Re: Macro Paragraph Style
Here’s a somewhat different approach. Starting with page 9, the following example code finds text formatted with the Chrono.conclusionyear style, inserts a section break at the top of the page (this allows each page to have different header text), places the text in the header, then continues with the next page. Modify as necessary.
Code:
Function setCIHeader()
Dim doc As Document
Dim objParagraph As Paragraph
Dim processpage As Long
Dim headertext As String
Set doc = Documents.Open(ActiveDocument.Path & "\cumindex.chrono.en.doc")
doc.Activate
processpage = 9
For Each objParagraph In ActiveDocument.Paragraphs
If Selection.Information(wdActiveEndPageNumber) > processpage Then
processpage = processpage + 1
Else
With objParagraph
If .Style = "Chrono.conclusionyear" Then
.Range.Select
headertext = Trim(.Range.Text)
If Selection.Information(wdActiveEndPageNumber) = processpage Then
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, _
Name:=Trim(Str(processpage))
Selection.InsertBreak Type:=wdSectionBreakContinuous
ActiveDocument.Sections(Selection.Sections.Item(1).Index) _
.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
ActiveDocument.Sections(Selection.Sections.Item(1).Index) _
.Headers(wdHeaderFooterPrimary).Range.Text = headertext
processpage = processpage + 1
End If
End If
End With
End If
Next objParagraph
End Function
|
|
|
|
![]() |
| Thread Tools | |
|
|