Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Warum dauert der Code solange?

Warum dauert der Code solange?
15.12.2003 13:55:24
Michael
Hallo@all,
folgender Code legt Druckbereich etc fest und dauert laaaanggeee:

With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""Arial,Fett""&22&A"
.RightHeader = ""
.LeftFooter = "xyz"
.CenterFooter = ""
.RightFooter = "&D"
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 56
.PrintErrors = xlPrintErrorsDisplayed
End With
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""Arial,Fett""&22&A"
.RightHeader = ""
.LeftFooter = "&12"
.CenterFooter = ""
.RightFooter = "&12&D"
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 56
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

Warum dauert der Code so ewig?
(Makrorec)
Gruß
Michael

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warum dauert der Code solange?
15.12.2003 14:29:38
geri
Hallo Michael

auf den ersten Blick du hast den Code zweimal aufgezeichnet
mit gleichen Inhalt und Funktion
denke beim zweiten mal "with aktive work..." kannst du erstmal löschen

gruss geri
AW: Warum dauert der Code solange?
15.12.2003 14:34:16
Micahel
Danke Geri!
Was meinst du mit "with aktive work..."
Wenn das MAkro bei mir durch ist, mach ich das weg:
LeftMargin = Application.InchesToPoints(0.787401575) etc(?)
AW: Warum dauert der Code solange?
15.12.2003 14:38:12
Bärnd
Hallo Michael,

der Zugriff auf das PageSetup - Objekt ist sehr langsam. Wenn ich mich recht entsinne, waren es speziell die Header und Footer - Texte.

Wie dem auch sei, hier ein Code-Ausschnitt:

ExecuteExcel4Macro ("PAGE.SETUP(""&L&""""Arial""""&8" & strZeile & " &B&A"", " & _
"""&L&""""Arial""""&8" & strFullname & _
"&R&""""Arial""""&8&P / &N - " & Format(Now, "dd.MM.yyyy"" - ""hh:mm") & _
""", , " & Str(0.4 / 2.54) & _
", " & Str(1.7 / 2.54) & _
", " & Str(2.2 / 2.54) & _
", , , , , , , , , , , " & _
", " & Str(1 / 2.54) & _
", " & Str(1.5 / 2.54) & ")")

PAGE.SETUP hat unterschiedliche Parameter für Tabellenbätter und Diagramme. Die Parameter sind in einer Hilfedatei mit Namen MacroFun.hlp beschrieben (Google Macrofun.hlp oder *.zip). Einen Haken hat die Sache noch: der mit ExecuteExcel4Macro übergebene Text (Excel4-Makro) darf nicht länger als 255 Zeichen sein bzw. wird abgeschnitten.

aus dieser Hilfe-Datei:

Worksheets and macro sheets
PAGE.SETUP(head, foot, left, right, top, bot, hdng, grid, h_cntr, v_cntr, orient, paper_size, scale, pg_num, pg_order, bw_cells, quality, head_margin, foot_margin, notes, draft)

Ciao

der Bärnd
Anzeige
AW: Warum dauert der Code solange?
15.12.2003 14:46:16
Michael
Hi Bärnd,
Danke für die Post, ich vermute dass :
LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
den Code ausbremst.
Wenn XL die Points(?) so exakt sucht, dauert das bestimmt...
Werde probehalber mal 0,78 testen ecetera...
Gruß
Michael
AW: Warum dauert der Code solange?
15.12.2003 14:54:00
Bärnd
Hallo Michael,

ich vergas zu schreiben, das ExecuteExcel4Macro("PAGE.SETUP ... erheblich schneller funktioniert als der Zugriff über ActiveSheet.PageSetup. Man kann mit einem Aufruf alle Parameter übergeben.

Mit der der Änderung der Genauigkeit kannst Du die Geschwindigkeit nicht ändern. Lediglich die Übersichtlichkeit kannst Du erhöhen, in dem Du "WertInCM/ 2.54" schreibst (Umrechnung cm - Inch)

Ciao

der Bernd
Anzeige
AW: Warum dauert der Code solange?
15.12.2003 15:49:56
Michael
Hallo Bernd!
Bist ein guter&hartnäckiger Antworter (DANKE!)
Solch ich statt Activesheet.Pagesetup ->nur Pagesetup schreiben?
Gruß
Michael
AW: Warum dauert der Code solange?
15.12.2003 15:55:18
geri
Michael

With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "&""Arial,Fett""&22&A"
.RightHeader = ""
.LeftFooter = "&12"
.CenterFooter = ""
.RightFooter = "&12&D"
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 56
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

ich habee so gemeint dieser Teil ist bei Dir 2x im Macro

gruss geri
Anzeige
AW: Warum dauert der Code solange?
15.12.2003 16:04:08
Michael
Ja, das hatte ich verstanden, dauert aber trotzdem immens lange :(

Wenn ich ActiveSheet.PageSetup zu Page.setup mache läuft es dann schneller oder wie hat das Bernd gemeint?

Viele Grüsse
Micahel
AW: Warum dauert der Code solange?
15.12.2003 17:17:25
Bärnd
Hallo Michael,

ich meine folgendes: Wenn man über die mit Excel 4.0 (!) eingeführte Makrosprache die Seiteneinrichtung ändert, dann geht es erheblich schneller als mit Ideal-Standard VBA.
Schau Dir mal Deine mit dem Makrorekorder aufgezeicheneten Codeschnipsel kritisch an und lösche raus, was nicht notwendig ist. Poste das Ganze, ich stell Dir dann einen ProgrammCode ins Forum. (morgen?)

Ciao

der Bärnd
Anzeige
AW: Warum dauert der Code solange?
15.12.2003 16:08:28
Michael
Mir ist da gerade was aufgefallen...
den Drucker wollte ich gar nicht so einstellen, dh.
PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 56 'bleibt drin
.PrintErrors = xlPrintErrorsDisplayed
fällt raus...
dadurch läuft es jetzt etwas schneller :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige