| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα σε όλα τα παιδιά. Σε κάποιο άλλο Topic και στο κεφάλαιο με τίτλο 'Μακροεντολές' ο Τάσος ανέπτυξε πως γίνεται η έξοδος ένος πίνακα σε αρχείο Excel. Ωφελήθηκα -και απο αυτή- την ανάλυση και θέλω να τον ευχαριστήσω γι' αυτό. Όμως ... Θα ήθελα να γνωρίσω και την αντίστροφη διαδικασία! Δηλαδή πώς απο Excel 'φορτώνεις' δεδομένα σε υπάρχοντα πίνακα βάσης δεδομένων, μέσω VBA. Ελπίζω να μη γίνομαι κουραστικός (χρήση της πλέον...ήπιας έκφρασης) με τις συνεχείς ερωτήσεις μου. Με εκτίμηση meteora |
|
#2
| |||
| |||
|
Αγαπητέ φίλε καλημέρα! Η εισαγωγή δεδομένων σε υπάρχοντα πίνακα βάσης δεδομένων με VBA είναι σχετικά απλή αλλά προυποθέτει το επιθυμητό φύλλο εργασίας ή περιοχή του βιβλίου Excel, να έχει ακριβώς την ίδια δομή δεδομένων (μορφή, πλήθος, και ονόματα στηλών ) που έχει και ο πίνακας προορισμού στην Access. Αφού τηρούνται οι παραπάνω προϋποθέσεις χρησιμοποιούμε τον παρακάτω κώδικα: Κώδικας: Function IMportFromXLsheet()
' Για να γίνει ο κώδικας πιο κατανοτός έχω προσθέσει και _
τα ονόματα των ορισμάτων της εντολής "TransferSpreadsheet"
On Error GoTo ErrH
DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
SpreadSheetType:=acSpreadsheetTypeExcel8, _
TableName:="tbldata", _
Filename:="C:\Data2Acc.xls", _
HasFieldNames:=True, _
Range:="Sheet2!A1:J10"
' ή DoCmd.TransferSpreadsheet 0, 8, "tbldata", "C:\Data2Acc.xls", -1, "Sheet2!A1:J10" _
(ειδικά αν πρόκειται να εκτελεστεί από κάποιο άλλο πρόγραμμα στα πλαίσια ενός αυτοματισμού).
IMportFromXLsheet_Exit:
Exit Function
ErrH:
MsgBox Err.Description
Resume IMportFromXLsheet_Exit
End Function
To "tbldata" δηλώνει τον πίνακα προορισμού της Access. To "Sheet2!A1:J10" δηλώνει την περιοχή του βιβλίου εργασίας προς εισαγωγή. Αντί για Range:="Sheet2!A1:J10" μπορουμε ακόμα να χρησιμοποιήσουμε: Range:="MyRange" δηλ. μια ονομασμένη περιοχή του βιβλίου εργασίας, ΥΓ. Κάθε άλλο παρά κουραστικός είσαι φίλε μου! Το φόρουμ οφείλει την ύπαρξη του σε σένα και στον καθέναν από μας! Εξάλλου...η γνώση είναι για να μοιράζεται. Φιλικά |
|
#3
| |||
| |||
|
Καλησπέρα φίλε Meteora και φίλε Tassos. Ο κώδικας μας δίνει φυσικά πάντα την δυνατότητα να παράγουμε διαδικασίες με τον δικό μας προσωπικό τρόπο και αυτό μας αποδίδει την απόλυτη ελευθερία κινήσεων. Ο κώδικας φυσικά είναι επίπονη ενέργεια και επιλέγεται συνηθέστερα όταν δεν μας καλύπτει μια αυτοματοποιημένη διαδικασία που παρέχει η Access. Μπαίνοντας το λοιπόν στην ουσία της απάντησής μου η δυνατότητα να καταχωρούμε δεδομένα σε Excel και να ενημερώνεται η Access καθώς και το αντίστροφο να καταχωρούμε δεδομένα σε Access και να ενημερώνεται το Excel γίνεται με την επιλογή σύνδεση πινάκων. (Αρχείο – Λήψη εξωτερικών δεδομένων – Σύνδεση πινάκων) εδώ εμφανίζεται το Παράθυρο Σύνδεση – Αρχεία τύπου επιλέγουμε Microsoft Excel *.xls και βάσει αυτού του αρχείου εμφανίζεται ένας οδηγός τον οποίο και ακολουθούμε τις οδηγίες του. Η σύνδεση ολοκληρώνεται με την εμφάνιση σχετικού μηνύματος. Η τεχνική αυτή δίνει την δυνατότητα χωρίς να καλούμε καμία συνάρτηση να υπάρχει ενημέρωση στους συνδεδεμένους πίνακες. Η επιλογή (Αρχείο – Λήψη εξωτερικών δεδομένων – Εισαγωγή) μεταφέρει τα δεδομένα στο πίνακα της Access. Η παραπάνω διαδικασία μπορεί να γίνει με την χρήση κώδικα VBA όπως αναφέρει παραπάνω και ο Tassos. Με κώδικα μπορούμε να δούμε κάνοντας χρήση το docmd.TransferSpreadsheet acLink για σύνδεση αντί για import που προαναφέρθηκε. Φιλικά Iliadisk / kon73 |
|
#4
| |||
| |||
|
Καλημέρα σε όλους σας Κωνσταντίνε -στη παρούσα περίπτωση- ήθελα μια απάντηση όπως αυτή που παρουσίασε ο Τάσος. Βεβαίως, φίλε μου με τη δική σου συμμετοχή έδωσες και μια άλλη πτυχή πάνω στο ζήτημα της 'ανταλλαγής δεδομένων' μεταξύ Access και Excel... Στην απάντηση του Τάσου -την οποία δοκίμασα! - έχω δυο - τρια σχόλια να κάνω : α. Παράθεση:
β. Δοκίμασα να 'φορτώσω' δεδομενα απο Excel που είχε λιγότερα πεδία σε σχέση με αυτά που είχε ο πίνακας της Access. Το...πείραμα πέτυχε! γ. Η παράμετρος Παράθεση:
Τάσο αυτά τα σχόλια -προφανώς - δεν περιέχουν καμιά ...μομφή στην απάντησή σου, για την οποία θερμά σε ευχαριστώ. Εύχομαι ένα καλό απόγευμα Meteora |
|
#5
| |||
| |||
|
Νάσαι καλά φίλε μου! Τα σχόλια του καθενός είναι πάντα ευπρόσδεκτα γιατί μέσα απ αυτά όλο και κάτι θα αποκομίσουμε και .....πίστεψέ με δεν τελειώνουν ποτέ! Πέραν από το ζητούμενο του μηνύματος σου, θα ήθελα να συμφωνήσω με τον Κωνσταντίνο και αν μου επιτρέπετε να τονίσω ότι: Στη VBA στρεφόμαστε μόνο όταν έχουμε εξαντλήσει όλες τις δυνατότητες που μας παρέχει η Access που χρησιμοποιούμε. Πιο σημαντικό όμως είναι η εξαρχής σωστή σχεδίαση του έργου (Project) της Access, για να μη πέσουμε αργότερα σε αδιέξοδο και να αναζητούμε ίσως ακραίες λύσεις προκειμένου να προχωρήσει το έργο μας. Εξ ίσου σημαντική είναι η επιλογή του σωστού εργαλείου για την εκάστοτε εργασία μας πάνω στο έργο. Καλό απόγευμα! |
|
#6
| |||
| |||
|
Καλησπερα και Καλο Πασχα σε ολους. Πως θα μπορουσα ενω βρισκομαι σε μια γραμμη του Excel 2003 ( με διπλο κλικ ) να στελνονται τα δεδομενα συγκεκριμενης περιοχης σε συγκεκριμενου αρχειου Φορμα της Access 2003 στην τελευταια εγγραφη. |
|
#7
| ||||
| ||||
|
Καλημέρα Σταύρο! Θα ήταν πιο απλό να συνδέσεις πίνακα της Access με το φύλλο της Excel που περιέχει τα δεδομένα. Κατόπιν με ένα ερώτημα στην Access θα μπορούσες με διάφορα κριτήρια να εμφανίζεις μόνο τις εγγραφές που σε ενδιαφέρουν. Φυσικά μπορείς κάνοντας διπλό κλικ σε γραμμή ενός φύλλου Excel να μεταφέρεις τις τιμές των κελιών σε αντίστοιχα πεδία σε πίνακα της Access αλλά θα χρειαστεί VBA για να υλοποιηθεί. Με αφορμή την ερώτηση σου δημιούργησα ένα σχετικό παράδειγμα εδώ: http://www.ms-office.gr/forum/excel-...html#post10411 Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#8
| |||
| |||
|
Καλημερα Τασο Σε ευχαριστω που παντα βοηθας , θα το δω και τα ξαναλεμε |
|
#9
| |||
| |||
|
Καλημερα σε ολους κ Χρονια Πολλα . Τασο το παιδεψα το παραδειγμα σου . Ειναι οτι ακριβως θελω , με την διαφορα οτι δεν μου λειτουργει στα δικα μου αρχεια. Και συγκεκριμενα , εχω το αρχειο Follow.xls στο οποιο εχω δημιουργησει ενα Φυλλο με ονομα grecian-connect , απο το οποιο θελω στο ενεργο κελι με διπλο κλικ να στελνει την εγγραφη των 56 στηλων και μονο αυτη στο αρχειο GRECIAN_2003.MDB και συγκεκριμενα στην φορμα CONTACT-Q Εαν δε υπαρχει καi η δυνατοτητα ελεγχου για διπλοεγγραφη μονο για email ( πραγμα το οποιο ειναι λιγο δυσκολο , αφου η ΒΔ εχει αλλα πεδια , το ονομα το επιθετο σε διαφορετικο πεδιο ) θα ηταν τελειο αλλα οχι και αναγκαιο. Επισης θα μπορουσε να γινει και το αντιστροφο απο την ΒΔ στο αρχειο xls ? Ευχαριστω προκαταβολικα |
|
#10
| ||||
| ||||
|
Καλημέρα! Σταύρο, φρόντισε οι στήλες της Excel να ταιριάζουν στη διάταξη και στους τύπους δεδομένων με τα πεδία του πίνακα CONTAKT στην Access. Μόνο το πρώτο πεδίο (id) πρέπει να παραμείνει ως έχει. Τα ονόματα των πεδίων της Access δεν μας ενδιαφέρουν. Αν υπάρχουν πεδία στον πίνακα της Access που δεν περιλαμβάνονται στις στήλες της Excel, μετακίνησε τα στο τέλος (μπορείς να το κάνεις αν ανοίξεις τον πίνακα CONTAKT σε προβολή σχεδίασης). Κάνε τα παραπάνω, ανέβασε τα διορθωμένα αρχεία ξανά για να το προχωρήσουμε. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| Προσάρτηση δεδομένων απο access σε excel | ευη79 | Access - Ερωτήσεις / Απαντήσεις | 3 | 30-11-14 10:57 |
| [VBA] Ενημέρωση δεδομένων από Excel σε Access | julie | Excel - Ερωτήσεις / Απαντήσεις | 2 | 25-12-13 21:07 |
| [VBA] Μεταφορά δεδομένων από Excel σε Access | Tasos | Excel samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 11-04-12 07:38 |
| [Συναρτήσεις] Εξαγωγή Πίνακα Access στο Excel | dream-garden | Excel - Ερωτήσεις / Απαντήσεις | 1 | 31-03-11 20:41 |
Η ώρα είναι 09:28.


Αλλαγή σε γραμμικό τρόπο

