EXCEL 2010 VBA Fusszeile erstellen
Hallo zusammen
mittels folgendem Code-Schnipsel erstelle ich per VBA eine Fusszeile
With ActiveSheet.PageSetup
'so lauten die Zeilen, wenn Application.PrintCommunication = off
.LeftFooter = "&A"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&F"
.LeftMargin = Application.InchesToPoints(0.19685)
.RightMargin = Application.InchesToPoints(0.19685)
.TopMargin = Application.InchesToPoints(0.19685)
.BottomMargin = Application.InchesToPoints(0.31496)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Orientation = xlLandscape
End With
Soweit kein Problem.
Nun hat ja aber Excel ein Problem mit der Geschwindigkeit, wenn in VBA Fusszeilen programmiert werden.
Wenn ich vor dem PageSetup
Application.PrintCommunication = False und nach dem PageSetup wieder auf True zurückstelle, läuft der Code wesentlich schneller (ca Faktor 10 schneller)
Siehe http://www.xing.com/net/vbatreff/office-2007-2010-vba-657492/druckenvor ...
Problem ist nun, dass die Befehle anders heissen müssen:
'so lauten die Zeilen, wenn Application.PrintCommunication = on
.LeftFooter = "&B"
.CenterFooter = "Seite &S von &A"
.RightFooter = "&N"
Dies wäre ja noch zu umgehen, aber wenn ich links, zentrisch und rechts gleichzeitig eine Fusszeile eingeben will, überschreibt er mir die Fusszeile mit irgendwelchen Werten, die ich nicht nachvollziehen kann.
zB links &R, in der mitte Seite 1 von, und rechts bleibt leer
Links, zentrisch oder rechts einzeln funktionieren
Kann jemand diesen Fehler von Excel bestätigen? Gibt's da eine Lösung dafür?
Danke und gruss meierjo
mittels folgendem Code-Schnipsel erstelle ich per VBA eine Fusszeile
With ActiveSheet.PageSetup
'so lauten die Zeilen, wenn Application.PrintCommunication = off
.LeftFooter = "&A"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&F"
.LeftMargin = Application.InchesToPoints(0.19685)
.RightMargin = Application.InchesToPoints(0.19685)
.TopMargin = Application.InchesToPoints(0.19685)
.BottomMargin = Application.InchesToPoints(0.31496)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Orientation = xlLandscape
End With
Soweit kein Problem.
Nun hat ja aber Excel ein Problem mit der Geschwindigkeit, wenn in VBA Fusszeilen programmiert werden.
Wenn ich vor dem PageSetup
Application.PrintCommunication = False und nach dem PageSetup wieder auf True zurückstelle, läuft der Code wesentlich schneller (ca Faktor 10 schneller)
Siehe http://www.xing.com/net/vbatreff/office-2007-2010-vba-657492/druckenvor ...
Problem ist nun, dass die Befehle anders heissen müssen:
'so lauten die Zeilen, wenn Application.PrintCommunication = on
.LeftFooter = "&B"
.CenterFooter = "Seite &S von &A"
.RightFooter = "&N"
Dies wäre ja noch zu umgehen, aber wenn ich links, zentrisch und rechts gleichzeitig eine Fusszeile eingeben will, überschreibt er mir die Fusszeile mit irgendwelchen Werten, die ich nicht nachvollziehen kann.
zB links &R, in der mitte Seite 1 von, und rechts bleibt leer
Links, zentrisch oder rechts einzeln funktionieren
Kann jemand diesen Fehler von Excel bestätigen? Gibt's da eine Lösung dafür?
Danke und gruss meierjo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222604
Url: https://administrator.de/contentid/222604
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
9 Kommentare
Neuester Kommentar
Hallo Meierjo,
sorry deine Beschreibung ist etwas wirr,
Mit deinen angegebenen Codes sähe deine Fußzeile bspw. so komisch aus:
Siehe dazu: http://msdn.microsoft.com/en-us/library/office/ff822794.aspx
Grüße Uwe
sorry deine Beschreibung ist etwas wirr,
Zitat von @Meierjo:
Problem ist nun, dass die Befehle anders heissen müssen:
'so lauten die Zeilen, wenn Application.PrintCommunication = on
.LeftFooter = "&B"
.CenterFooter = "Seite &S von &A"
.RightFooter = "&N"
verstehe nicht was du mit diesen Fußzeilen-Codes erreichen willst:Problem ist nun, dass die Befehle anders heissen müssen:
'so lauten die Zeilen, wenn Application.PrintCommunication = on
.LeftFooter = "&B"
.CenterFooter = "Seite &S von &A"
.RightFooter = "&N"
&B
= Turns bold printing on or off. (Willst du eine vorhandene Fußzeile fett formatieren ?)&S
= Turns strikethrough printing on or off.&A
= Prints the name of the workbook tab.Mit deinen angegebenen Codes sähe deine Fußzeile bspw. so komisch aus:
Links | Mitte | Rechts |
---|---|---|
Seite | 10 |
Dies wäre ja noch zu umgehen,
Was willst du umgehen ???aber wenn ich links, zentrisch und rechts gleichzeitig eine Fusszeile eingeben will,
überschreibt er mir die Fusszeile mit irgendwelchen Werten, die ich nicht nachvollziehen kann.
Kann jemand diesen Fehler von Excel bestätigen?
Kann ich hier auf mehreren Office 2010 Systemen nicht nachvollziehenüberschreibt er mir die Fusszeile mit irgendwelchen Werten, die ich nicht nachvollziehen kann.
Kann jemand diesen Fehler von Excel bestätigen?
Grüße Uwe
Ich hoffe, meine Beschreibung ist nun verständlicher.
alles klar, das du das in einer Schleife verwendest hatte mir gefehlt ..Eine wirkliche Lösung dafür gibt es nicht, aber anscheinend soll dieser Fehler nur bei den Kopf- und Fußzeilen auftreten.
D.h. du könntest mal versuchen nur für die Eigenschaften der Footer
PrintComunication
einzuschalten und für alle anderen Eigenschaften auszuschalten, vielleicht verringert sich dann die benötigte Zeit auf deinem Rechner. Hier geht's in unter 1 Sekunde...With ActiveSheet.PageSetup
Application.PrintCommunication = False
.LeftMargin = Application.InchesToPoints(0.19685)
.RightMargin = Application.InchesToPoints(0.19685)
.TopMargin = Application.InchesToPoints(0.19685)
.BottomMargin = Application.InchesToPoints(0.31496)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Orientation = xlLandscape
Application.PrintCommunication = True
.LeftFooter = "&A"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&F"
End With
Grüße Uwe
Ich würde außerdem die Schleife mal anders schreiben, damit nicht jedes Sheet "manuell" selektiert wird:
Sub Fusszeile()
Dim StartZeit, EndZeit, Laufzeit As Date
Dim i%
StartZeit = Now
For i = 1 To Worksheets.Count
Application.PrintCommunication = False
With Worksheets(i).PageSetup
.LeftMargin = Application.InchesToPoints(0.19685)
.RightMargin = Application.InchesToPoints(0.19685)
.TopMargin = Application.InchesToPoints(0.19685)
.BottomMargin = Application.InchesToPoints(0.31496)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Orientation = xlLandscape
Application.PrintCommunication = True
.LeftFooter = "&A"
.CenterFooter = "Seite &P von &N"
.RightFooter = "&F"
End With
Next i
EndZeit = Now
Laufzeit = EndZeit - StartZeit
MsgBox "Bearbeitunsgszeit: " & Laufzeit, vbOKOnly
End Sub
Zitat von @Meierjo:
Ja, diese Version läuft bei mir auch unter 1 Sekunde. Aber wenn Application.PrintCommunication = False auskommentiert wird,
dann dauerts auch bei dir länger, oder??
nö. (Core i7 860 2,8GHz 4 Kern 8GB Ram, Win7x64)Ja, diese Version läuft bei mir auch unter 1 Sekunde. Aber wenn Application.PrintCommunication = False auskommentiert wird,
dann dauerts auch bei dir länger, oder??
denke das liegt aber zusätzlich am verwendeten Drucker etc.
Zitat von @Meierjo:
Ok, bei mir ist ein Netzwerkdrucker als Default hinterlegt. Kann das was damit zu tun haben?
Oh ja, mach mal testweise einen lokalen zum Standarddrucker...Ok, bei mir ist ein Netzwerkdrucker als Default hinterlegt. Kann das was damit zu tun haben?