AW: Kopf- und Fußzeile mit Logo als Standard
12.10.2018 15:32:20
fcs
Hallo Frank,
du brauchst dann ja Makros um den Ablauf zu steuern.
Diese Makros musst du in deiner persönlichen Arbeitsmappe speichern. Für optimalen Komfort kannst du diese Makros dann mit Schaltflächen in einem zusätzlichen Menüe verknüpfen oder auf der Menüleiste für den Schnellzugriff einbauen.
Eine vollständig automatische Formatierung des Seitenlayouts neuer Tabellenblätter/Diagrammblätter ist wahrscheinlich via Klassenmodul und Ereignismakros möglich, das ist mir momentan etwas zu aufwendig und halte ich auch nicht für angemessen. Damit würdest du komplett die Kontrolle an den Automatismus abgeben oder man müsste immer Rückfragen einbauen, ob bestimmte Aktionen durchgeführt werden sollen.
Da ist das gezielte Starten der jeweiligen Makros der übersichtlichere Weg.
Bei Tabellenblättern hast du dann 2 Optionen:
1. Laden einer vorhandenen Vorlagedatei mit einem Tabellenblatt (z.Bsp. die Vorlage für das 1. Blatt)
Dies ist der "einfachste" Weg. Ein entsprechendes Makro sieht etwa so aus:
Sub NewSheet_A4hoch_mit_Logo()
Dim objSh As Object, sPfadName$
Set objSh = ActiveSheet
'Pfad und Name der einzufügenden Vorlage-Datei
sPfadName = "Y:\wwdaten\Vorlagen\A4hoch_mit_Logo.xltx" 'Name anpassen!!!
ActiveWorkbook.Sheets.Add after:=objSh, Type:=sPfadName
End Sub
2. Per Makro werden alle erforderlichen Anweisung für das Seiten-Layout ausgeführt.
Hier muss dann die als Logo einzubindende Datei in einem Verzeichnis liegen auf das immer zugegriffen werden kann - z.B. das Verzeichnis in dem die Excel-Vorlage(n) gespeichert sind.
Immer erst ein neues Tabellenblatt einfügen, dann das Makro starten.
Sub Tabellenblatt_A4quer_mit_Logo()
' SeitenLayout_A4quer_mit_Logo Makro
' Formatiert das Seiten-Layout eines Excelblatt in A4-quer mit Logo(Grafik)
Dim strGrafik$
strGrafik = "D:\Test\LOGO_klein.jpg" 'Name anpassen!!!
With ActiveSheet.PageSetup
.LeftHeaderPicture.Filename = strGrafik
'Bildgrösse anpassen
With .LeftHeaderPicture
.Height = 12
.Width = 51
End With
'Texte/Steuerzeichen in Kopf- und Fusszeilen
.LeftHeader = "&G"
.CenterHeader = "Projekt: "
.RightHeader = "&8&F"
.LeftFooter = "&8Erstellt am " & Format(Date, "YYYY-MM-DD")
.CenterFooter = "Druckdatum: &D"
.RightFooter = "Blatt &P von &N"
'Seitenränder
.LeftMargin = Application.CentimetersToPoints(1.8)
.RightMargin = Application.CentimetersToPoints(1.8)
.TopMargin = Application.CentimetersToPoints(2#)
.BottomMargin = Application.CentimetersToPoints(1.5)
.HeaderMargin = Application.CentimetersToPoints(1)
.FooterMargin = Application.CentimetersToPoints(1#)
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape 'Querformat
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = False
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
End Sub
Bei Diagramm-Blättern funktioniert nur der Weg über nachträgliches Formatieren des Seiten-Layouts nach dem anlegen des Diagrammblattes.
Sub Diagrammblatt_A4quer_mit_Logo()
' SeitenLayout_A4quer_mit_Logo Makro
' Formatiert das Seiten-Layout eines Excel-Diagrammblatts in A4-quer mit Logo(Grafik)
Dim strGrafik$
Dim shChart As Chart
Set shChart = ActiveSheet
strGrafik = "D:\Test\LOGO_klein.jpg" 'Name anpassen!!!
With shChart
With .PageSetup
'Logo links oben in Kopfzeile einfügen
.LeftHeaderPicture.Filename = strGrafik
'Bildgrösse anpassen
With .LeftHeaderPicture
.Height = 12
.Width = 51
End With
'Texte/Steuerzeichen in Kopf- und Fusszeilen
.LeftHeader = "&G"
.CenterHeader = "Projekt: "
.RightHeader = "&8&F"
.LeftFooter = "&8Erstellt am " & Format(Date, "YYYY-MM-DD")
.CenterFooter = "Druckdatum: &D"
.RightFooter = "Blatt &P von &N"
'Seitenränder
.LeftMargin = Application.CentimetersToPoints(1.8)
.RightMargin = Application.CentimetersToPoints(1.8)
.TopMargin = Application.CentimetersToPoints(2#)
.BottomMargin = Application.CentimetersToPoints(1.5)
.HeaderMargin = Application.CentimetersToPoints(1)
.FooterMargin = Application.CentimetersToPoints(1#)
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape 'Querformat
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.BlackAndWhite = False
.Zoom = 100
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = False
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
End With
End Sub
Bei Pivot-Berichten, hast du 2 Wege:
A: Neues Tabellenblatt aus Vorlage erzeugen (Methode 1) und dann beim Erzeugen des Berichts die Option "in vorhandenem Blatt" wählen.
B: Den Bericht wie gewognt anlegen und dann via Methode 2 das Seitenlayout formatieren.
Zur Anpassung meiner Makros an dein Layout am besten mit dem Makro-Rekorden das ändern des Seitenlayout aufzeichnen und dann in meinem Makro die entsprechenden Abschnitt anpassen. In meinen Makros sind einige Sachen gelöscht/vereinfacht, die der Rekorder aufzeichnet. Sie stören entweder oder sind überflüssig.
Viel Erfolgt bei der Umsetzung auf deine Anforderungen.
LG
Franz