Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Αποστολή επισυναπτόμενων αρχείων μέσα από φόρμα με mail
Γεια σας, έχω μια βάση που καταγράφω διάφορα προβλήματα και τους δίνω αύξουσα αρίθμηση (Πεδίο Id), Σε μία φόρμα με όνομα PROTOKOLO που βλέπει τον Πίνακα PROTOKOLO καταγράφω τα προβλήματα και τα στέλνω σαν pdf με email για επίλυση. Στη φόρμα υπάρχει και ένα πεδίο με τύπο Συνημμένο που επισυνάπτω διάφορα έγγραφα Θα ήθελα στο mail που δημιουργεί το κουμπάκι που έφτιαξα να μπαίνουν και τα επισυναπτόμενα έγγραφα μαζί με το pdf του προβλήματος Σας στέλνω παράδειγμα της βάσης Ευχαριστώ |
#2
| |||
| |||
Στο internet βρήκα τον παρακάτω κώδικα που τον προσάρμοσα στη βάση μου και τον εκτελώ με ένα κουμπί cmdEmail Λειτουργεί αλλά όλα γίνονται από το microsoft. outlook ενεργοποιώντας από τα tools - references to microsoft.object library κάτι που δεν μπορούν να τρέξουν όλοι οι χρήστες που έχουν άλλα προγράμματα mail Αν υπάρχει ευκολότερος τρόπος θα είναι καλοδεχούμενος. Private Sub cmdEmail_Click() Dim rsTable As DAO.Recordset Dim rsAttachments As DAO.Recordset Dim objOutlook As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Outlook.Recipient Dim objOutlookAttach As Outlook.Attachment ' Create the Outlook session. On Error GoTo cmdEmail_Click_Error Set objOutlook = CreateObject("Outlook.Application") ' Create the message. Set objOutlookMsg = objOutlook.CreateItem(olMailItem) With objOutlookMsg 'Add the To recipient(s) to the message. Substitute 'your names here. Set objOutlookRecip = .Recipients.Add("onoma@yahoo.com") '<--Recipient's name or email address objOutlookRecip.Type = olTo 'The Subject of the message. .Subject = "Email Subject" '<--Subject 'The Email Body Text .Body = "Body text of the email" '<--Email Body text. 'Instantiate the parent recordset. Set rsTable = CurrentDb.OpenRecordset("PROTOKOLO") 'rsTable.MoveFirst 'Loop through the Records. Do While Not rsTable.EOF 'Instantiate the child recordset. Set rsAttachments = rsTable.Fields("SINIMMENA2").Value 'Loop through the attachments, attaching each one to the email Do While Not rsAttachments.EOF 'Save current attachment to disk. rsAttachments.Fields("FileData").SaveToFile "C:\" Set objOutlookAttach = .Attachments.Add("C:\" & rsAttachments.Fields("FileName")) 'Delete this temp file: Kill "C:\" & rsAttachments.Fields("FileName") rsAttachments.MoveNext Loop rsTable.MoveNext Loop 'Resolve each Recipient's name. For Each objOutlookRecip In .Recipients If Not objOutlookRecip.Resolve Then objOutlookMsg.Display End If Next 'Send email without viewing it. '.Send 'Dispay email before sending. .Display End With 'Cleanup Code Set objOutlookMsg = Nothing Set objOutlook = Nothing Set objOutlookRecip = Nothing Set objOutlookAttach = Nothing 'No need to close rsAttachments, 'in fact if you close it, it will generate an error Set rsAttachments = Nothing rsTable.Close Set rsTable = Nothing On Error GoTo 0 Exit Sub cmdEmail_Click_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdEmail_Click" End Sub |
#3
| ||||
| ||||
Καλησπέρα Δημήτρη! Με χρήση VBA και χωρίς τη χρήση εξωτερικών στοιχείων ελέγχου (*.ocx) μπορείς να στείλεις συνημμένο μέσω Email μόνο με Mιcrosoft Outlook. Μια λύση με CDO θα εξυπηρετούσε αν τα συνημμένα μπορούσαν να αποστέλλονται από έναν έγκυρο λογαριασμό ηλεκτρονικού ταχυδρομείου. Και πάλι θα πρέπει να φροντίσεις στον υπολογιστή προορισμού να υπάρχει και να είναι δηλωμένο στο μητρώο των Windows CDOSYS.dll (για Windows 2000). Σε κάθε άλλη περίπτωση θα χρειαστείς κάποιο εμπορικό ή μη στοιχείο ελέγχου (το οποίο επίσης θα πρέπει να βρίσκεται στον υπολογιστή προορισμού και να είναι δηλωμένο στο μητρώο των Windows) που να σου επιτρέπει την αυτόματη αποστολή συνημμένου μέσω του προεπιλεγμένου προγράμματος Email του κάθε υπολογιστή. Με εκτίμηση Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#4
| |||
| |||
Τάσο ευχαριστώ για την απάντηση σου !!! Ερώτηση αν ξέρεις εσύ ή κάποιος άλλος, όταν τρέχει η εφαρμογή με access runtime οι βιβλιοθήκες (object library ) που έχουμε τσεκάρει στα tools (πχ Microsoft Outlook 12 Object Library) όταν δημιουργούμε τη βάση μεταφέρονται και λειτουργεί ο κώδικας που τις χρησιμοποιεί ή θα έχω πρόβλημα; |
#5
| |||
| |||
Δημήτρη καλησπέρα!!! Όλα τα reference μεταφέρονται όταν η βάση είναι στη μορφή μετατροπή σε MDE. Όταν είναι MDB και σταλεί με email ο απομακρυσμένος υπολογιστής θα λάβει την βάση με miissing στις αναφορές. Στη δεύτερη περίπτωση CDO που αναφέρει ο Τάσος θα πρέπει να περάσεις στα reference την αναφορά Microsoft CDO for windows 2000 library. |
#6
| |||
| |||
Ευχαριστώ πολύ Αλέξανδρε.
|
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[VBA] Αποστολή e-mail σε πελάτες μου (vba) | mpapada | Excel - Ερωτήσεις / Απαντήσεις | 0 | 07-05-15 23:58 |
Αποστολή αρχείων με e-mail μέσω Αccess | mpapada | Access - Ερωτήσεις / Απαντήσεις | 0 | 24-04-15 15:25 |
Η ώρα είναι 08:27.