Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Excel per VBA aus Access formatieren

Begonnen von mmarschner, Juli 28, 2012, 12:12:34

⏪ vorheriges - nächstes ⏩

mmarschner

Hallo zusammen,

ich habe folgendes Problem:

Es werden Daten aus Access nach Excel exportiert und bei dem Export werden die einzelnen Zeilen und die Arbeitsblätter formatiert. Das funktioniert auch alles wunderbar.

Jetzt ist im Export ein weiteres Feld hinzugekommen, so dass die Tabelle nicht mehr auf einer Seite ausgedruckt wird. Eine Alternative wäre zwar, die Schriftgröße und damit auch die Spaltenbreite und Zeilenhöhe per VBA anzupassen, was aber in meinem Fall keine Lösung ist.

Ich suche jetzt die Befehle, um die Seiteneinrichtung so vorzunehmen, dass alle Spalten wieder auf eine Seite passen. Die Anzahl der Seiten, die sich bei dem Export ergeben kann ich errechnen, was auch kein Problem darstellt.

Im Moment habe ich folgende Lösung, die leider nicht korrekt arbeitet - den ganzen Vorspann lasse ich weg, da der Programmcode mehrere Seiten lang ist:

        With .ActiveSheet
           .PageSetup.PrintArea = "$A$1:$J$" & j + 5
           .PageSetup.FitToPagesWide = 1
           .PageSetup.FitToPagesWide = 1
                If ((j + 2) / 16) < 1 Then
                    .PageSetup.FitToPagesTall = 1
                Else
                    .PageSetup.FitToPagesTall = (j + 2) / 16
                End If
        End With

j entspricht der Anzahl an Zeilen aus dem Recordset der übergeben wird.

Wenn ich mir in Excel die Seitenformatierung ansehe, dann sind alles Werte auch so übernommen. Wenn ich mir die Seitenansicht ansehe, dann habe ich die letzte Spalte jedoch auf den nächsten Seite, da anscheinend ein Seitenumbruch im Excelsheet vorhanden ist. Wie bekomme ich den per VBA aus Access heraus gelöscht?

Fragende Grüße aus Hamburg, in der Hoffnung heute noch eine Antwort zu bekommen.

Michael

database

Hallo,

um ALLE Seitenumbrüche eines Excel-Sheets zu löschen kannst du folgendes versuchen - die letzte Zeile setzt den Zoom wieder auf 100% zurück:

Sub UmbruchWeg()

   Dim i as Long, j as Long

   On Error Resume Next

   For i = ActiveSheet.VPageBreaks.Count - 1 To 1 Step -1
       ActiveSheet.VPageBreaks(i).DragOff Direction:=xlToRight, RegionIndex:=1
   Next i
   For j = ActiveSheet.HPageBreaks.Count - 1 To 1 Step -1
       ActiveSheet.HPageBreaks(j).DragOff Direction:=xlUp, RegionIndex:=1
   Next j
   ActiveSheet.PageSetup.Zoom = 100

End Sub


p.s.   .PageSetup.FitToPagesWide = 1
       .... kommt in deinem Codeschnippsel doppelt vor!

HTH