Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ActiveSheet.PageSetup.FitToPages

ActiveSheet.PageSetup.FitToPages
07.06.2007 16:19:46
Klaus
Hallo VBA-ler!
Ich habe mit folgenden Code gebastelt, um eine Exeltabelle ohne Formeln und Verknüpfungen in ausdruckbare bzw. verschickbare Form zu bringen.
Dazu blende ich zunächst alle unrelevanten Teile aus und kopiere die noch sichtbaren in eine neue Tabelle.
Soweit klappt das auch. Probleme:
- Der Ausdruck soll immer auf einer Seite erfolgen. Der Makrorekorder hat mir "PageSetup.FitToPages" rausgeworfen, aber das will im Makro nicht mehr funktionieren.
- Der Druckbereich steigt mit 1004 aus: "Die PrintArea-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden.
Wenn mir jemand die entsprechenden Codezeilen anpassen könnte, das währ ganz toll!
Hier ist der gesamte Code:

Sub PG_Druck()
Application.ScreenUpdating = False
Dim r As Range
Dim lColI As Integer
Dim lRowI As Integer
Dim PrintThis As String
With Sheets("PG-Plan")
For Each r In .Range("M1:AV1")
If r.Value = 0 Then r.EntireColumn.Hidden = True
Next 'r
.Range("C3:AV158").SpecialCells(xlCellTypeVisible).Copy
.Range("M1:AV1").EntireColumn.Hidden = False
End With
Workbooks.Add
'Focus auf neuem Workbook
Range("A1").PasteSpecial                             'Inhalte mit Formaten kopieren
Range("A1").PasteSpecial Paste:=xlValues  'Inhalte als Text in bestehende Formate kopieren
Application.CutCopyMode = False                 'Ameisen
Columns("A:A").ColumnWidth = 13
Columns("B:IV").ColumnWidth = 7
lColI = Range("IV5").End(xlToLeft).Column
lRowI = Range("A65535").End(xlUp).Row
PrintThis = "A1:" & Chr(64 + lColI) & lRowI
With ActiveSheet.PageSetup
'.PrintArea = Range(PrintThis)  !!!! funktioniert nicht
.PrintGridlines = True
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
'.FitToPagesWide = 1                !!!! funktioniert nicht
'.FitToPagesTall = 1                   !!!! funktioniert nicht
End With
Application.ScreenUpdating = True
End Sub


Vielen Dank im vorraus, Forum!
Grüße,
Klaus M.vdT.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveSheet.PageSetup.FitToPages
07.06.2007 17:19:32
Ramses
Hallo
probier mal
Option Explicit

Sub test()
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Sub


Gruss Rainer

AW: ActiveSheet.PageSetup.FitToPages
07.06.2007 17:51:00
Klaus
Hallo Rainer,
Hallo Daniel,
das ich den Druckbereich hier nicht brauche ist natürlich richtig. Ich hatte nur "definiere den Druckbereich" im Hinterkopf und habe gar nicht darüber nachgedacht, dass eh alles gedruckt werden sollte. *BrettVorKopf*
Das ich den Druckbereich nicht zwingend mit "Range", sondern auch mit "Cells" definieren kann merke ich mir aber fürs nächste mal!
Mit Zoom = False funktioniert plötzlich das FitToPage. Es ist mir allerdings unerklärlich, warum das so ist! Erstmal vielen Dank für diese Lösung.
Grüße an beide,
Klaus M.vdT.

Anzeige
AW: ActiveSheet.PageSetup.FitToPages
07.06.2007 18:29:00
Daniel
Eigentlich logisch, daß Zoom nicht gesetzt werden darf.
wenn du maximale Ausdrucksgrösse und den Zoom gleichzeitig fest vorgibst, wie soll Excel dann entscheiden, welcher Wert gilt?
also muß einer der beiden Grössen offen sein.
Gruß, Daniel

AW: ActiveSheet.PageSetup.FitToPages
08.06.2007 10:56:00
Klaus
Hallo Daniel,
danke für die Erklärung.
Gruß,
Klaus M.vdT.

AW: ActiveSheet.PageSetup.FitToPages
07.06.2007 17:20:00
Daniel
Hallo
da du eh nur die Zeilen in das neue Workbook kopierst, die auch gedruckt werden sollen, brauchst du den Druckbereich nicht vorgeben, sondern kannst ihn auf automatisch lassen.
d.h. du kannst die Zeile mit: .PrintArea = Range(PrintThis)
ganz weglassen, dann sollte das ganze funktionieren.
das Problem ist allerdings diese Zeile (die du dann natürlich auch nicht brauchst)

PrintThis = "A1:" & Chr(64 + lColI) & lRowI


wenn dein Druckbreich grösser als 26 Spalten ist, (bspw 27) müsste PrintThis = "A1:AA100" sein.
Tatsächlich ist es aber: "A1:[100", und damit für die .PageSetup-Funktion nicht mehr interpretierbar.
(chr(101) = "[")
Eine Lösung wäre folgender Code:


PrintThis: = range(cells(1,1), cells(lRowI,lColI)).address


aber wie gesagt, das brauchst du nicht, da dein neues Workbook ja eh nur das enthalten sollte, was auch gedruckt werden soll.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige