Logos ein- ausschalten

25/02/2009 - 19:49 von P.Belloni | Report spam
Hi

Ich habe einige Vorlagen, welche beim Start nach bestimmten Kriterien z.B.
Logos in die Kopfzeile der Vorlage einfügt.

"Erste Seite anders"

1. Ich möchte das Logo1 in der Kopfzeile auf der 1 Seite, die folgenden
erhalten das Logo2. Wie füge ich das Logo2 auf die folgenden Seiten ein,
wenn nur eine Seite in der Vorlage existiert?
Muss ich da eine zweite Seite erzeugen (Seitenumbruch) und das Logo2 dann
einsetzen, danach die zweite Seite wieder entfernen (Seitenumbruch)?
Geht das nicht einfacher?

2. Die Logos, Logo1 auf der ersten und Logo2 auf den folgenden Seiten müssen
aus- und einschaltbar sein. Mittels Inlineshape.addpicture habe ich die
Logos eingefügt.
Kann ich diese Logos irgendwie alle auf einmal deaktivieren (auflistung),
visible=false machen? Gibt es ein anderes Objekt, als das Inlineshape, wo
ich die Bilder besser ansteuern kann?
Auch Logo2 deaktivieren, wenn ich nur eine Seite im Dokument habe?

3. Mit welcher Eigenschaft erhalte ich die aktuelle Gesamtseitenanzahl von
meinem Dokument (Vorlage)?

Gruss und Dank
 

Lesen sie die antworten

#1 Thomas Gahler
26/02/2009 - 07:53 | Warnen spam
Guten Morgen P.


1. Ich möchte das Logo1 in der Kopfzeile auf der 1 Seite, die folgenden
erhalten das Logo2. Wie füge ich das Logo2 auf die folgenden Seiten ein,
wenn nur eine Seite in der Vorlage existiert?


Wenn du das mit VBA machst, dann ist das egla. Du kannst den Bereich der
Kopfzeiel auch ansprechen, wenn dieser noch nicht dargestellt wird.
Vorhanden ist er trotzdem.
Fügst du jedoch das Logo manuell ein, dann geht es nur via zweite Seite
erzeugen und wieder löschen


2. Die Logos, Logo1 auf der ersten und Logo2 auf den folgenden Seiten
müssen aus- und einschaltbar sein. Mittels Inlineshape.addpicture habe ich
die Logos eingefügt.
Kann ich diese Logos irgendwie alle auf einmal deaktivieren (auflistung),
visible=false machen? Gibt es ein anderes Objekt, als das Inlineshape, wo
ich die Bilder besser ansteuern kann?


Es gibt ein anderes Objekt. Dabei handeltes sich um ein .Shape-Objekt,
dieses liegt in der Zeichenebene und kann somit frei Positioniert werden.
Ich empfehle dir das Logo als Shape einzufügen.


Auch Logo2 deaktivieren, wenn ich nur eine Seite im Dokument habe?


Darum musst du dich nicht kümmern. Wenn keine zwiete Seite vorhanden ist,
dann ist nichts da. Also einfach alle Logos ein- bzw. ausblenden.


3. Mit welcher Eigenschaft erhalte ich die aktuelle Gesamtseitenanzahl von
meinem Dokument (Vorlage)?


Dazu sind mir im Moment zwei bekannt.

MsgBox ActiveDocument.ComputeStatistics(wdStatisticPages)
MsgBox Selection.Information(wdNumberOfPagesInDocument)





Und hier ein paar Zeilen Code zum Logos einfügen, anzeigen und ausblenden:

' - - - - -
Option Explicit
Const tgSHP_LOGO As String = "LOGO-"

Sub Demo1()
Dim doc As Word.Document

Set doc = Documents.Add

LogosEinfügen _
doc:=doc, _
intKopfzeilenTyp:=wdHeaderFooterFirstPage, _
strLogoDatei:="C:\Temp\Blau.bmp"

LogosEinfügen _
doc:=doc, _
intKopfzeilenTyp:=wdHeaderFooterPrimary, _
strLogoDatei:="C:\Temp\Rot.bmp"


With doc
.Sections(1).PageSetup.DifferentFirstPageHeaderFooter = True
.Saved = True
End With
End Sub

Sub Demo2()
LogosSichtbarkeit _
doc:=ActiveDocument, _
bSichtbar:=False
End Sub

Sub Demo3()
LogosSichtbarkeit _
doc:=ActiveDocument, _
bSichtbar:=True
End Sub

' - - - - -
Sub LogosSichtbarkeit( _
ByVal doc As Word.Document, _
ByVal bSichtbar As Boolean)

Dim hdr As Word.HeaderFooter
Dim shpLogo As Word.Shape

'Kopfzeilen-Bereich als Range festlegen (hier ist es egal
'welche Kopfzeile angegeben wird, denn Word verwaltet alle
'Shapes in Kopf/Fusszeilen an einem zentralen Ort, deshalb
'muss nicht explizit ein bestimmter Bereich definiert werden.)
Set hdr = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)

'Alle Shapes ansprechen und prüfen ob es sich um ein Logo handelt
For Each shpLogo In hdr.Shapes
If InStr(1, shpLogo.Name, tgSHP_LOGO, vbTextCompare) <> 0 Then
shpLogo.Visible = bSichtbar
End If
Next shpLogo
End Sub

Sub LogosEinfügen( _
ByVal doc As Word.Document, _
ByVal intKopfzeilenTyp As WdHeaderFooterIndex, _
ByVal strLogoDatei As String)

Dim hdr As Word.HeaderFooter
Dim rngKopfzeile As Word.Range
Dim shpLogo As Word.Shape

'Kopfzeilen-Bereich als Range festlegen
Set hdr = doc.Sections(1).Headers(intKopfzeilenTyp)
Set rngKopfzeile = hdr.Range

'Logo einfügen
Set shpLogo = hdr.Shapes.AddPicture( _
FileName:=strLogoDatei, _
Anchor:=rngKopfzeile, _
LinkToFile:=False, _
SaveWithDocument:=True)

'Logo formatieren
With shpLogo
'Name (Pràfix und zufalls Nummer zuweisen)
.Name = tgSHP_LOGO & CStr(intKopfzeilenTyp) & "-" & CStr(Rnd())
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.LockAspectRatio = True
.LockAnchor = True
'Links
.Left = CentimetersToPoints(3.2)
'Oben
.Top = CentimetersToPoints(2.1)
'Breite ( -> Höhe wird automatisch gesetzt.)
.Width = CentimetersToPoints(4.5)
End With

End Sub
' - - - - -










Thomas Gahler
MVP für Word
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP3), Office XP (SP3)

Ähnliche fragen