![]() |
#1
|
|||
|
|||
![]()
Hi Forum!
I have been trying for 3 days to find a way to toggle objects (Company Logo and address) that are in the header and footer of a letterhead and invoice. There are other objects (page no's etc) in the header and footer that need to be always visible / printed so I can not just turn the whole header on and off. The idea is the client can click a button to turn these objects off when they print on their headed paper (Pre-printed). Or leave them on to send a PDF or print a document for internal use. I have an functioning example document but I can not work out how to target specific objects I import onto the page (or to define a name for them). The example I have uses this code on an image file ("logo1"): If ActiveDocument.Sections(1).Headers(wdHeaderFooterF irstPage).Shapes("logo1").Visible = True Then ActiveDocument.Sections(1).Headers(wdHeaderFooterF irstPage).Shapes("logo1").Visible = False ActiveDocument.Sections(1).Headers(wdHeaderFooterF irstPage).Shapes("logo2").Visible = False Else ActiveDocument.Sections(1).Headers(wdHeaderFooterF irstPage).Shapes("logo1").Visible = True ActiveDocument.Sections(1).Headers(wdHeaderFooterF irstPage).Shapes("logo2").Visible = True End If Any help would be greatly appreciated! Miles |
#2
|
|||
|
|||
![]()
Miles,
The way I do this is to create two autotext entries. One LH_Logo is the Logo graphic. The other No_Logo is a empty shape of the same size and position as LH_Logo. Then add an autotext field in the first page header: {AutoText LH_Logo} Code:
Sub AddLetterhead() Dim oFld As Field Dim oRng As Word.Range, oRngFld As Word.Range Dim lngInterogate As Long lngInterogate = ActiveDocument.Sections(1).Headers(1).Range.StoryType Set oRng = ActiveDocument.StoryRanges(wdFirstPageHeaderStory) 'Does the header Autotext field exist? On Error Resume Next If Not oRng.Fields(1).Type = wdFieldAutoText Then On Error GoTo 0 'No, then create it. Set oRngFld = oRng.Duplicate oRngFld.Collapse wdCollapseStart Set oFld = oRng.Fields.Add(oRngFld, wdFieldAutoText, "LH_Logo") oFld.Update On Error GoTo 0 Else Set oFld = oRng.Fields(1) If InStr(oFld.Code.Text, "No_Logo") > 0 Then oFld.Code.Text = Replace(oFld.Code, "No_Logo", "LH_Logo") oFld.Update End If End If lbl_Exit: Exit Sub End Sub Sub RemoveLetterhead() Dim oFld As Field Dim oRng As Word.Range Dim lngInterogate As Long lngInterogate = ActiveDocument.Sections(1).Headers(1).Range.StoryType Set oRng = ActiveDocument.StoryRanges(wdFirstPageHeaderStory) 'Does the header Autotext field exist? If oRng.Fields.Count > 0 Then Set oFld = oRng.Fields(1) If oFld.Type = wdFieldAutoText Then If InStr(oFld.Code.Text, "LH_Logo") > 0 Then oFld.Code.Text = Replace(oFld.Code, "LH_Logo", "No_Logo") oFld.Update End If End If End If lbl_Exit: Exit Sub End Sub |
#3
|
|||
|
|||
![]()
Dear Greg,
Sorry for not getting back earlier, I have been away... but thanks for your reply, it seems a very good technique, I will certainly give it a go. I have The windows version with office 2010 now, much easier than my mac version to navigate so this should be fairly straightforward. I will let you know if it works out! Thanks again, Miles |
#4
|
|||
|
|||
![]()
Dear Greg,
It all seems to be working great so thank you again. I just have one question that I have so far been unable to solve on my own and that is how I apply this to two both my headers and not just the first one. The second header is different as it has page numbers / subject etc. Thanks for any help! Miles |
![]() |
Tags |
headers footers all pages, toolbar, vba in microsoft word |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
sumjoh | Word VBA | 1 | 01-29-2013 08:38 PM |
![]() |
nutrastat | Word | 3 | 09-09-2011 01:52 PM |
Migrate 2003 custom toolbar to 2007 | shameerau | Word | 0 | 05-16-2011 07:42 PM |
![]() |
Brandi | Mail Merge | 18 | 06-15-2010 02:10 PM |
Dock a custom floating toolbar? | itgoeson | PowerPoint | 0 | 05-25-2010 08:34 AM |