Posts tagged: Excel

Excel-Dokumente aus Access heraus formatieren

comments Kommentare deaktiviert für Excel-Dokumente aus Access heraus formatieren
By , 27. Juli 2015

Hallo,
angenommen ihr exportiert Daten von Access nach Excel und möchtet nach Bearbeitung das Excel-Sheet ausdrucken.
Das Anpassen der Seitenränder für den Druck kann man nämlich auch gleich aus Access heraus erledigen.
Dazu benötigen wir zuerst den Verweis auf die aktuelle Microsoft Excel Library.

Danach benötigen wir die 3 Excel-Objekte für die Anwendung, das Workbook und das Worksheet:

    Dim xlApp As Excel.Application
    Dim xlBook As Workbook
    Dim xlSheet As Worksheet

    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("c:\output.xlsx")
    Set xlSheet = xlBook.Worksheets(1)

Das Anwendungsobjekt ist definiert, das Workbook geöffnet und der Verweiss auf das erste Arbeitsblatt gesetzt. Jetzt gehts los:

    With xlSheet.PageSetup
        .LeftHeader = "&""Arial,Standard""&8&F"
        .CenterHeader = "&""Arial,Standard""&8&A"
        .RightHeader = "&""Arial,Standard""&8&D"
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = "&""Arial,Standard""&8Seite &P"
        .LeftMargin = xlApp.InchesToPoints(0.5)
        .RightMargin = xlApp.InchesToPoints(0.25)
        .TopMargin = xlApp.InchesToPoints(0.75)
        .BottomMargin = xlApp.InchesToPoints(0.75)
        .HeaderMargin = xlApp.InchesToPoints(0.5)
        .FooterMargin = xlApp.InchesToPoints(0.5)
        ....
    End With

Man kann also alles einstellen was auch in Excel einzustellen geht. Zu beachten ist, dass die Angaben in Points zu machen sind. Dazu kann man die Excel-Funktion InchesToPoints() verwenden.
Seht euch die Schreibweise für die Schriftart und -Größe an. Beachtet die doppelte Anführungszeichen.
Man kann auch bequem Einstellungen wie Druckqualität, Papiergröße oder Seitenzahlen einfügen wie oben im rechten Footer.

Bis dahin
© 2015 Andreas Vogt

Quick-Tipp: Daten nach Excel exportieren

By , 27. Februar 2009

Auf die Schnelle die aktuellen Datensätze nach Excel rüberschieben wäre doch nicht schlecht, und beeindruckt doch sicher euren Chef – der von der Materie wieder keine Ahnung hat 😉
Und wenn der wüsste wie einfach das geht…

Hier mal der ganze Code der dazu notwendig ist:

Dim oExcel As Object, i As Integer
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb

On Error Resume Next
Err.Clear
Set oExcel = CreateObject("Excel.Application")
If Err.Number <> 0 Then Set oExcel = CreateObject("Excel.Application")
On Error GoTo 0
With oExcel
    .Visible = True
    .Workbooks.Add
    .ActiveSheet.Name = "Arbeitsblatt1"
    Set rs = db.OpenRecordset(Me.RecordSource, dbOpenSnapshot)
    For i = 0 To rs.Fields.Count - 1
        .Cells(1, i + 1) = rs.Fields(i).Name
    Next i
    .Range("A2").SELECT
    .Selection.CopyFromRecordset rs
End With
rs.close
set rs = Nothing
set db = Nothing
Set oExcel = Nothing

Da obige Methode late Binding ist, benötigt man keinen Verweiss auf Excel.
Mittels .Cells(zeile,spalte) wird die Spaltenüberschriften eingetragen, die aus dem Namen der Datenfelder kommen. .Range(„A2“).SELECT setzt den Cursor auf das Feld A2 in Excel, und mittels .Selection.CopyFromRecordset rs werden alle Daten im aktuellen Recordset auf einen Rutsch nach Excel kopiert.

AV 2009

OfficeFolders theme by Themocracy