Θέμα: Πίνακες Εξαγωγή πινάκων σε Excel

Εμφάνιση ενός μόνο μηνύματος
  #9  
Παλιά 05-06-13, 01:15
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Μάνο, στον κώδικα σου αντικατέστησε τη συνάρτηση ExportAccessTablesToExcel() με την παρακάτω.

Φυσικά ο χρόνος εκτέλεσης θα είναι μεγαλύτερος αλλά οι μορφοποιήσεις θα διατηρηθούν.

Κώδικας:
Function ExportAccessTablesToExcel( _
         ExportFolder As String, _
         Optional ExportAllTablesInOneWorkbook As Boolean, _
         Optional WorkbookName As String)

    Const xl2003 = "Excel 97 - Excel 2003 Workbook(*.xls)"
    Dim i As Integer
    Dim SheetCount As Integer
    Dim tdfs As TableDefs
    Dim tdf As TableDef
    Dim strFileName As String
    Dim xl As Object, MainWB As Object, WB As Object, wks As Object

    If Dir(ExportFolder, vbDirectory) = vbNullString Then
        MsgBox "Ο φάκελος δεν είναι διαθέσιμος!", vbExclamation
        Exit Function
    End If

   Set tdfs = CurrentDb.TableDefs

    If ExportAllTablesInOneWorkbook And Len(WorkbookName) Then
        WorkbookName = ExportFolder & WorkbookName & ".xls"
        Set xl = CreateObject("Excel.Application")
        Set MainWB = xl.Workbooks.Add
        SheetCount = MainWB.Sheets.Count
        On Error GoTo ExitHere
        MainWB.SaveAs WorkbookName, 56
    Else
        ExportAllTablesInOneWorkbook = False
    End If

    For Each tdf In tdfs
        If tdf.Attributes And dbSystemObject Then
        Else
            strFileName = ExportFolder & tdf.Name & ".xls"
            DoCmd.OutputTo acOutputTable, tdf.Name, xl2003, strFileName, False
            If ExportAllTablesInOneWorkbook Then
                Set WB = xl.Workbooks.Open(strFileName)
                WB.Sheets(1).Copy After:=MainWB.Sheets(MainWB.Sheets.Count)
                WB.Close False
                Kill strFileName
            End If
        End If
    Next
ExitHere:
    If Err <> 0 Then MsgBox Err & vbLf & Err.Description, vbExclamation
    If Not MainWB Is Nothing Then
        If Not MainWB.Saved Then
            xl.DisplayAlerts = False
            For i = 1 To SheetCount
                MainWB.Sheets(i).Delete
            Next
            MainWB.Save
        End If
        Set MainWB = Nothing
        If Err = 0 Then MsgBox ("OK")
    End If
    If Not xl Is Nothing Then
        xl.Quit
        Set xl = Nothing
    End If
End Function
Καλή συνέχεια

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 05-06-13 στις 03:33.
Απάντηση με παράθεση