Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Access (2000) Report To Word

Îåêßíçóå áðü ôï ìÝëïò Ευθύμης Δημόπουλος. Τελευταία δημοσίευση από το μέλος manosB στις 05-10-2007, 16:06. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-10-2007, 14:01 35869

    Access (2000) Report To Word

    Καλησπέρα συνάδελφοι,

    Έχω φτιάξει ένα report με subreports στην access του τύπου:

    -Στοιχεία Εταιρείας
        -Στοιχεία Πωλητή
           α
           β
           γ
           δ

        -Πωλήσεις πωλητή
           α
           β
           γ
    κλπ

    Αυτό λοιπόν θελω να το εξάγω σε word...
    καμμια ιδέα?

    μέσα από vba ίσως??? κανένα template?


    Σας ευχαριστώ...
  •  05-10-2007, 14:34 35872 σε απάντηση της 35869

    Απ: Access (2000) Report To Word

    Παρόμοιο σενάριο το έχω υλοποιήσει με VBA αλλά ανοίγωντας κέρσορα σε πίνακες και queries της Access και γράφοντας κατευθείαν σε πίνακα μέσα στο word. Αν είναι αυτό κάτι που θέλεις τότε πες το να δημοσιεύσω λίγο κώδικα για το πως γίνεται. (Αρκετά απλό) και να τον αλλάξεις λίγο για να το βάλεις στην access
    Μπορείς εύκολα μέσα από το word από το tools-macro-record new macro να κάνεις εσύ τις ενέργειες με το mouse και αυτό να καταγράφει το κώδικα που δημιουργείται. Μετά θα κάνεις edit τη macro που έκανες record για να πάρεις ιδέα για το κώδικα που χρειάζεσαι. Π.χ για τη δημιουργία ενός πίνακα 2χ2 o vba editor του word κατέγραψε:
    Sub zzzz()
    '
    ' zzzz Macro
    ' Macro recorded 05/10/2007 by manos
    '
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
    2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
    wdAutoFitFixed
    With Selection.Tables(1)
    If .Style <> "Table Grid" Then
    .Style = "Table Grid"
    End If
    .ApplyStyleHeadingRows = True
    .ApplyStyleLastRow = True
    .ApplyStyleFirstColumn = True
    .ApplyStyleLastColumn = True
    End With
    End Sub


    Manos
  •  05-10-2007, 14:44 35873 σε απάντηση της 35872

    Απ: Access (2000) Report To Word

    Αν μπορούσες να στείλεις κάτι θα με διευκόλυνες πραγματικά.

    Δεν έχω ξαναχρησιμοποιήσει vba δυστυχώς οπότε μέσα από τον κώδικα νομίζω κάτι θα έπιανα...
  •  05-10-2007, 16:06 35876 σε απάντηση της 35873

    Απ: Access (2000) Report To Word

    Λοιπόν κοίτα το παρακάτω κωδικα. Πρέπει για να δουλέψει να έχεις κάνεις reference τη  Microsoft word object library (στον VBAeditor:Tools-references)
    Παίρνω ένα πίνακα τον φορτώνω σε ένα recordset και μετά μια μια εγγραφή γράφω σε word table.
    Αντί για πίνακα μπορείς να βάλεις και query βέβαια και με τον μηχανισμό που σε περίγραψα παραπάνω μπορείς να βρεις και τις άλλες ιδιότητες του πίνακα στο word.

    Private Sub WordExport_Click()

    Dim AccessTbl As Recordset 'Ο πίνακας που αποθηκεύει τα δεδομένα
    Dim ObjWordApp As Word.Application
    Dim ObjWord As Word.Document
    Dim oSel As Word.Selection
    Dim oTable As Word.Table


    'δώσε όνομα στον πίνακα της Access
    Set AccessTbl = CurrentDb.OpenRecordset("mytable")

    'όρισε την εφαρμογή Word και άνοιξε το έγγραφο που διάλεξες παραπάνω
    Set ObjWordApp = CreateObject("Word.Application")
    Set ObjWord = ObjWordApp.Documents.Add
    ObjWord.Activate

    'απενεργοποίησε τις προειδοποιήσεις στο Word
    ObjWordApp.DisplayAlerts = False

    'όρισε τον Δρομέα Επιλογής
    Set oSel = ObjWord.Application.Selection

    'page setup
    With ObjWord.PageSetup
    .TopMargin = CentimetersToPoints(0.5)
    .BottomMargin = CentimetersToPoints(0.3)
    .LeftMargin = CentimetersToPoints(0.5)
    .RightMargin = CentimetersToPoints(0.5)
    End With
    'απενεργοποίησε τον ορθογραφικό έλεγχο
    With ObjWord.Application.Options
    .CheckSpellingAsYouType = False
    .CheckGrammarAsYouType = False
    .SuggestSpellingCorrections = False
    End With

    'δημιουργησε τον πίνακα στο Word με αριθμό σειρών όσa και τα records του πινακα
    Set oTable = ObjWord.Tables.Add(ObjWord.Range(0, 0), AccessTbl.RecordCount, 2)
    'μορφοποίηση πίνακα, στηλών και κελιών
    oTable.Select
    With oSel
    .Cells.SetHeight RowHeight:=CentimetersToPoints(3.6), HeightRule:=wdRowHeightExactly
    .Cells.VerticalAlignment = wdCellAlignVerticalCenter
    .Cells.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
    .Cells.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
    .Cells.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
    .Cells.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
    .Font.Name = "Arial"
    .Font.Size = 16
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
    End With
    With oTable.Columns(1)
    .SetWidth ColumnWidth:=CentimetersToPoints(9.5), RulerStyle:=wdAdjustNone
    .Select
    End With
    oSel.ParagraphFormat.Alignment = wdAlignParagraphCenter
    With oTable.Columns(2)
    .SetWidth ColumnWidth:=CentimetersToPoints(9.5), RulerStyle:=wdAdjustNone
    .Select
    End With
    oSel.ParagraphFormat.Alignment = wdAlignParagraphCenter
    'διάλεξε το πρώτο κελί
    oTable.Cell(1, 1).Select
    On Error Resume Next 'για να μην κολλησει στη τελευταία εγγραφή
    'γράψε σε κάθε κελί του πίνακα του Word τα στοιχεία από τον πίνακα της Access
    AccessTbl.MoveFirst
    Do Until AccessTbl.EOF
    oSel.TypeText Text:="" & AccessTbl.Fields(0).Value & ""
    oSel.MoveRight unit:=wdCell
    oSel.TypeText Text:="" & AccessTbl.Fields(1).Value & ""
    oSel.MoveRight unit:=wdCell
    AccessTbl.MoveNext
    Loop


    ObjWord.SaveAs ("c:\1.doc")

    ObjWord.Close (True) 'κλείσε σώζοντας τις αλλαγές
    ObjWordApp.Quit 'κλείσε το Word
    Set ObjWordApp = Nothing
    Set ObjWord = Nothing
    Set oSel = Nothing
    Set oTable = Nothing

    End Sub


    Manos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems