Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| ||||
| ||||
Εξαγωγή στοιχείων από φόρμα σε Word
Καλησπέρα σε όλους Θα ήθελα να επανέλθω στο θέμα ζητώντας την βοήθειά σας. Θέλω να κάνω αυτό ακριβώς που λέει το θέμα, προσπαθώ δηλαδή σε μια βάση που έχω φτιάξει να πετύχω όσο πιο απλά γίνεται, τη μεταφορά συγκεκριμένων στοιχείων από μια φόρμα, σε συγκεκριμένα σημεία ενός συγκεκριμένου εγγράφου Word με το "πάτημα" ενός κουμπιού εντολής. Κάπου είχα δει ένα αρχείο το οποίο με αυτό τον τρόπο, πατώντας δηλαδή ένα κουμπί εντολής , αυτόματα άνοιγε το αιτούμενο αρχείο και αυτόματα "γέμιζαν" πεδία του τα οποία ήταν φόρμες που περιείχαν σελιδοδείκτες. Το αρχείο βέβαια ήταν σε συγκεκριμένο φάκελο μέσα στο δίσκο (νομίζω C:\.....) καθώς και η ίδια η ΒΔ (πιστεύω ότι κάποιο ρόλο θα έπαιζε αυτό). Δεν ξέρω αν και κατά πόσο είναι εύκολο να γίνει κάτι τέτοιο. Ανεβάζω ένα απλό δείγμα για να καταλάβετε τι εννοώ. Είναι μία πολύ απλή ΒΔ με μία φόρμα στην οποία καταχωρώ για παράδειγμα στοιχεία ταυτότητας , τα οποία αποθηκέυονται σε ένα πίνακα , από τον οποίο θέλω πατώντας το κουμπί εντολής , να "φεύγουν" και να "γεμίζουν" τα σημεία που έχω ορίσει με σελιδοδείκτες, πχ σε μια υπευθυνη δήλωση , έγγραφο του Word και όχι σε μια έκθεση της access. Ευχαριστώ εκ των προτέρων Δημήτρης |
#2
| ||||
| ||||
Καλημέρα σε όλους! Δημήτρη, στη βάση που ανέβασες, έχεις βάλει αρκετούς περιορισμούς κάτι που δεν διευκολύνει τόσο τα μέλη του φόρουμ, όσο και για σένα τον ίδιο αφού ακόμα σχεδιάζεις τη βάση. Εκτός αυτού, πριν επισυνάψεις το αρχείο κάνε μια συμπύκνωση & επιδιόρθωση. Ο όγκος του αρχείου θα μειωθεί σημαντικά με αυτόν τον τρόπο. Τώρα στη ερώτηση σου: Φρόντισε να επαναφέρεις τη βάση στην αρχική μορφή της (Άρση περιορισμών) για να μπορείς να κάνεις τις δοκιμές σου. Στην ιδιότητα Ετικέτα του πεδίου Επώνυμο πληκτρολόγησε τον αριθμό 2 (υποδηλώνει τη σειρά εμφάνισης του πεδίου φόρμας (Επώνυμο ή Surname) στο Word. Στην ιδιότητα Ετικέτα του πεδίου Κείμενο8*** πληκτρολόγησε τον αριθμό 1 (υποδηλώνει τη σειρά εμφάνισης του πεδίου φόρμας (Όνομα ή Name) στο Word. Κάνε το ίδιο και στα υπόλοιπα πεδία της Access. Άλλαξε το όνομα στο κουμπί "Υπεύθυνη δήλωση" σε CmdSendToWD κατόπιν αντιστοίχησε τον παρακάτω κώδικα στο συμβάν "Με το κλικ" του κουμπιού: Κώδικας: Private Sub CmdSendToWD_Click() Dim wdDoc As Object, wdPath As String, Ctl As Access.Control ' wdPath = "C:\Δηλώσεις\Υπεύθυνη δήλωση.doc" 'Προσάρμοσε τη διαδρομή wdPath = CurrentProject.Path & "\Υπεύθυνη δήλωση.doc" 'Για να τρέξει το παράδειγμα σου If Dir(wdPath, vbDirectory) <> vbNullString Then Set wdDoc = GetObject(wdPath) Else MsgBox "Το αρχείο δεν βρέθηκε!" Exit Sub End If For Each Ctl In Me.Section(0).Controls If TypeOf Ctl Is Access.TextBox Then If IsNumeric(Ctl.Tag) Then wdDoc.FormFields(CInt(Ctl.Tag)).result = Nz(Ctl, vbNullString) End If End If Next wdDoc.Application.Visible = True AppActivate wdDoc.Name End Sub Πως; Κάνε κλικ στην επιλογή Εργαλεία >Προστασία εγγράφου... Τσέκαρε το "Δυνατότητα μόνο αυτού του τύπου επεξεργασίας στο έγγραφο:" και από τη λίστα ακριβώς από κάτω επίλεξε: Συμπλήρωση φορμών. Πάτησε το κουμπί "Ναι να ξεκινήσει η ενεργοποίηση προστασίας" Καλή συνέχεια! Τάσος *** Το Όνομα. Η ονοματολογία που χρησιμοποιείς θα σε κουράσει και μπορεί να προκαλέσει λάθη.
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 19-03-12 στις 10:20. |
#3
| |||
| |||
Παράθεση:
Καλημέρα σε όλους. Δημήτρη με τη πολύτιμη βοήθεια του Τάσου σε μια ανάλογη δική μου περίπτωση, ανεβάζω τη βάση σου με μικροαλλαγές. 1. Στον Πίνακα πρόσθεσα τα πεδία Επώνυμο μητέρας, ΑΔΤ, Τόπος κατοικίας, και Τηλέφωνο που χρειάζονται για την Δήλωση 2. Στη φόρμα πατώντας το κουμπί Υπεύθυνη Δήλωση δημιουργεί αυτόματα στο δίσκο C, το φάκελο "ΔΗΛΩΣΕΙΣ" δηλ c:\ΔΗΛΩΣΕΙΣ και έναν υποφάκελο με το όνομα του έτους και του μήνα δημιουργίας της δήλωσης, όπου εκεί αποθηκεύεται η εκάστοτε υπεύθυνη δήλωση με το όνομα και την ημερομηνία δημιουργίας. Δηλ. για τον κ.Ξενάκη με σημερινή ημερομηνία θα έχουμε C:\ΔΗΛΩΣΕΙΣ\2012-03\19-03-12 - ΞΕΝΑΚΗΣ.doc Προσοχή!! Το έγγραφο Υπεύθυνη δήλωση.doc να το αντιγράψεις στο δίσκο c:\ επισυνάπτω τη βάση Φιλικά Νάσος Τελευταία επεξεργασία από το χρήστη nasos23 : 19-03-12 στις 16:13. |
#4
| ||||
| ||||
Καλό μεσημέρι σε όλους ... Δεν έχω λόγια να σας ευχαριστήσω Τάσο και Νάσο για την αμεσότητα της βοήθειάς σας. Ξεκινάω να κάνω τις δοκιμές μου και επανέρχομαι … Σας ευχαριστώ και πάλι Δημήτρης |
#5
| ||||
| ||||
Καλό απόγευμα και πάλι σε όλους ... Μετά από δοκιμές που έκανα και στις δύο μορφές - λύσεις που μου προτείνατε , και καθόσον τις εφάρμοζα στα αρχεία που θέλω να φτιάξω , μου γεννήθηκαν δύο ερωτήματα που έχουν να κάνουν με τον κώδικα της εντολής. Συγκεκριμένα για την πρόταση σου φίλε Τάσο έχω να πώ τα καλύτερα από πλευράς ευκολίας υλοποίησης της . Στο μόνο που "κόλλησα" ήταν στο τι πρέπει να κάνω όταν θέλω να βάλω τιμή από ένα πεδίο της access σε δύο διαφορετικά πεδία φόρμας στο ίδιο έγγραφο του word που "ζητάνε" το ίδιο αποτέλεσμα (πχ το Επώνυμο κλπ.). Συγκεκριμένα δεν ξέρω τι τιμή θα πρέπει να βάλω στην ετικέτα . Στην πρόταση σου φίλε Νάσο παρατήρησα ότι με τον κώδικα που έγραψες , όταν κάποιο πεδίο στης φόρμας της access δεν έχει τίμή (κενό) , η εντολή δεν ολοκληρώνεται παρά μόνο βγάζει το γνωστό "ταμπελάκι" του debug : "Runtime error...type mismatch" και "χτυπάει" στο πεδίο του κώδικα που αφορά την συγκεκριμένη τιμή. Ανεβάζω ξανά τη βδ για να καταλάβεις τι εννοώ, και θα ήθελα αν μπορείς και δε σου κάνει κόπο να ανεβάσεις ξανά τον κώδικα διορθωμένο. Βλέπεις οι γνώσεις μου σε visual basic, είναι αυτές του αρχάριου και έτσι εγώ δεν μπορώ ακόμα να παρέμβω σ'αυτόν. Σε γενικές γραμμές βέβαια και οι δύο προτάσεις μου έδωσαν το αποτέλεσμα που ήθελα και για το λόγο αυτό σας ευχαριστώ πολύ και πάλι. Φιλικά Δημήτρης |
#6
| ||||
| ||||
Δημήτρη, έστω ότι: το πεδίο(7) του Word πρέπει να έχει την ίδια τιμή με το πεδίο(1) και το πεδίο(8) του Word πρέπει να έχει την ίδια τιμή με το πεδίο(2) Βρες το κομμάτι του κώδικα: Κώδικας: For Each Ctl In Me.Section(0).Controls If TypeOf Ctl Is Access.TextBox Then If IsNumeric(Ctl.Tag) Then wdDoc.FormFields(CInt(Ctl.Tag)).result = Nz(Ctl, vbNullString) End If End If Next Κώδικας: For Each Ctl In Me.Section(0).Controls If TypeOf Ctl Is Access.TextBox Then If IsNumeric(Ctl.Tag) Then wdDoc.FormFields(CInt(Ctl.Tag)).result = Nz(Ctl, vbNullString) End If End If Next wdDoc.FormFields(7).result = wdDoc.FormFields(1).result wdDoc.FormFields(8).result = wdDoc.FormFields(2).result
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#7
| |||
| |||
Καλησπέρα σας Για το τελευταίο συνημμένο αρχείο test2.zip χρειάζεται κάποια ρύθμιση στο Word; Πατώντας το κουμπί στην ΒΔ "πάει" να ανοίξει το Word δεν δημιουργείται η Υπεύθυνη δήλωση! |
#8
| |||
| |||
Παράθεση:
Μια μικρή προσθήκη στον κώδικα για το λάθος On Error Resume Next Ανεβάζω το αρχείο διορθωμένο Φιλικά Νάσος |
#9
| |||
| |||
Παράθεση:
Αν κατάλαβα καλά. Σε προηγούμενη απάντηση στον Δημήτρη "DIMNOT" σημειώνω. Προσοχή!! Το έγγραφο Υπεύθυνη δήλωση.doc να το αντιγράψεις στο δίσκο c:\ Φιλικά Νάσος |
#10
| |||
| |||
Το έχω αντιγράψει, μου ανοίγει την εφαρμογή του Word αλλά όχι το αρχείο της δήλωσης
|
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Γενικά] Εισαγωγή στοιχείων στο word από λίστα του excel | rania1984 | Excel - Ερωτήσεις / Απαντήσεις | 14 | 06-03-24 20:25 |
[Excel07] εξαγωγη στοιχειων απο πολλα φυλλα | pnemtsa | Excel - Ερωτήσεις / Απαντήσεις | 11 | 06-01-17 12:05 |
[Μορφοποίηση] Μεταφορά στοιχείων από excel σε word | skantzo | Excel - Ερωτήσεις / Απαντήσεις | 2 | 15-10-10 01:36 |
Η ώρα είναι 14:41.