Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

EXCEL 2010 VBA Fusszeile erstellen

Frage Microsoft Microsoft Office

Mitglied: Meierjo

Meierjo (Level 2) - Jetzt verbinden

21.11.2013, aktualisiert 11:25 Uhr, 9688 Aufrufe, 9 Kommentare, 1 Danke

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
Mitglied: colinardo
21.11.2013, aktualisiert um 13:30 Uhr
Hallo Meierjo,
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:
&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 von Tabelle1 10
Siehe dazu: http://msdn.microsoft.com/en-us/library/office/ff822794.aspx

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

Grüße Uwe
Bitte warten ..
Mitglied: Meierjo
21.11.2013, aktualisiert um 14:21 Uhr
Hallo Uwe

Habe zum besseren Verständnis mal eine Beispiel-Mappe auf unseren FTP hochgeladen:
ftp://beispiel:Uze9ybene@ftp.heggli-gubler.ch

Dort sind 20 Tabelle drin, die mit der Fusszeile versehen werden sollen.
Werden im Makro die beiden Zeilen
'Application.PrintCommunication = False und
'Application.PrintCommunication = True auskommentiert, werden die Fusszeilen korrekt erstellt.
Links der Tabellen-Name
mittig :Seite 1 von 1
rechts der Arbeitsmappen-Name

Allerdings ist die Laufzeit für dieses kleine Makro bei meinen PC ~28 Sec, was zu lange ist.

Also habe ich laut: http://www.xing.com/net/vbatreff/office-2007-2010-vba-657492/druckenvor ... am anfange des Codes die Zeile 'Application.PrintCommunication = False eingegeben, was den Code wirklich sagenhaft beschleunigt.
Allerdings stimmt dann die Fusszeilen-Formatierung nicht mehr. Mir kommt es so vor, als ob bei der schnelleren Variante die Formatcodes für manuelle Eingabe verwendet werden müssen.

http://www.at-exceltraining.de/index.php/fragen-a-anworten-zu-excel/47- ...

Ich hoffe, meine Beschreibung ist nun verständlicher.

Gruss meierjo
Bitte warten ..
Mitglied: colinardo
21.11.2013, aktualisiert um 14:56 Uhr
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...

01.
With ActiveSheet.PageSetup 
02.
 
03.
     Application.PrintCommunication = False 
04.
    .LeftMargin = Application.InchesToPoints(0.19685) 
05.
    .RightMargin = Application.InchesToPoints(0.19685) 
06.
    .TopMargin = Application.InchesToPoints(0.19685) 
07.
    .BottomMargin = Application.InchesToPoints(0.31496) 
08.
    .HeaderMargin = Application.InchesToPoints(0) 
09.
    .FooterMargin = Application.InchesToPoints(0) 
10.
    .Orientation = xlLandscape 
11.
      
12.
     Application.PrintCommunication = True 
13.
    .LeftFooter = "&A" 
14.
    .CenterFooter = "Seite &P von &N" 
15.
    .RightFooter = "&F" 
16.
End With
Grüße Uwe
Bitte warten ..
Mitglied: colinardo
21.11.2013, aktualisiert um 15:08 Uhr
Ich würde außerdem die Schleife mal anders schreiben, damit nicht jedes Sheet "manuell" selektiert wird:

01.
Sub Fusszeile() 
02.
    Dim StartZeit, EndZeit, Laufzeit As Date 
03.
    Dim i% 
04.
    StartZeit = Now 
05.
    For i = 1 To Worksheets.Count 
06.
        Application.PrintCommunication = False 
07.
        With Worksheets(i).PageSetup 
08.
            .LeftMargin = Application.InchesToPoints(0.19685) 
09.
            .RightMargin = Application.InchesToPoints(0.19685) 
10.
            .TopMargin = Application.InchesToPoints(0.19685) 
11.
            .BottomMargin = Application.InchesToPoints(0.31496) 
12.
            .HeaderMargin = Application.InchesToPoints(0) 
13.
            .FooterMargin = Application.InchesToPoints(0) 
14.
            .Orientation = xlLandscape 
15.
 
16.
            Application.PrintCommunication = True 
17.
            .LeftFooter = "&A" 
18.
            .CenterFooter = "Seite &P von &N" 
19.
            .RightFooter = "&F" 
20.
        End With 
21.
    Next i 
22.
     
23.
    EndZeit = Now 
24.
    Laufzeit = EndZeit - StartZeit 
25.
    MsgBox "Bearbeitunsgszeit: " & Laufzeit, vbOKOnly 
26.
End Sub
Bitte warten ..
Mitglied: Meierjo
21.11.2013 um 15:31 Uhr
Hallo Uwe

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??

Gruss Meierjo
Bitte warten ..
Mitglied: colinardo
21.11.2013, aktualisiert um 15:34 Uhr
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)
denke das liegt aber zusätzlich am verwendeten Drucker etc.
Bitte warten ..
Mitglied: Meierjo
21.11.2013 um 15:38 Uhr
Hallo

Ok, bei mir ist ein Netzwerkdrucker als Default hinterlegt. Kann das was damit zu tun haben?

Werde deine Versionen mal in den fertigen Code einbauen, und dir berichten, was Sache ist.

Danke dir vorerst mal.

Gruss meierjo
Bitte warten ..
Mitglied: colinardo
21.11.2013 um 15:42 Uhr
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...
Bitte warten ..
Mitglied: Meierjo
21.11.2013 um 15:51 Uhr
Hallo

Ok, mit Standrard-Drucker rennt das wie der Teufel. Auf sowas wäre ich nie gekommen.

Ja, man lernt immer wieder dazu.

Danke dir vielmal für deine Hilfe.

Gruss meierjo
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst Excel - VBA - Fusszeile Text und Grafik (1)

Frage von Juckie zum Thema VB for Applications ...

Microsoft Office
gelöst Verschieben von Zellinformation in andere Spalte (per VBA) excel 2010 (5)

Frage von thomas1972 zum Thema Microsoft Office ...

VB for Applications
SNMP Abfrage in EXCEL über VBA (7)

Frage von SebastianL zum Thema VB for Applications ...

Microsoft Office
gelöst Email-Adresse aus Adressbuch-String in Excel 2010 herausschneiden (4)

Frage von rudeboy zum Thema Microsoft Office ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows Server
gelöst Exchange HyperV Prozessorlast (19)

Frage von theoberlin zum Thema Windows Server ...

Windows Server
Server mit Netzwerkaussetzern (18)

Frage von SarekHL zum Thema Windows Server ...

Server-Hardware
gelöst SPP von HP Abwärtskompatibel? (14)

Frage von fireskyer zum Thema Server-Hardware ...

Netzwerke
Vorschlag Hotelverkabelung (14)

Frage von FA-jka zum Thema Netzwerke ...