Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Εξαγωγή αρχείου σε μορφή pdf με επιλογή θέσης και με alarm ύπαρξης ίδιου ονόματος

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 03-05-17, 16:38
Όνομα: Τίμος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 13-03-2015
Μηνύματα: 44
Προεπιλογή Εξαγωγή αρχείου σε μορφή pdf με επιλογή θέσης και με alarm ύπαρξης ίδιου ονόματος

Χρόνια Πολλά σ' όλους
Χριστός Ανέστη.
Για άλλη μία φορά θα χρειαστώ την βοήθεια από τα μέλη του φόρουμ. Παραθέτω δύο κώδικες, τους οποίους μου τους έστειλε ο Γιώργος (kapetang) σε παλαιότερα θέματα που είχα ζητήσει βοήθεια και εκτελούν τις ακόλουθες εντολές:
Ο 1ος μας επιτρέπει να αποθηκεύσουμε σε μορφή pdf έκθεση σε φάκελο που θα επιλέξουμε εμείς.
Ο 2ος μας προειδοποιεί για την ύπαρξη αρχείου με το ίδιο όνομα σε προκαθορισμένο φάκελο.
Αυτό που θέλω να πετύχω και δεν μπόρεσα, αν και έχω κάνει αρκετές προσπάθειες, να μπορέσω να "παντρέψω" τους δύο κώδικες. Δηλ. ένας κώδικας που με μία εντολή να γίνεται η εξαγωγή του pdf σε φάκελο της επιλογής μου και ταυτόχρονα να υπάρχει μία προειδοποίηση για το εάν στον ίδιο φάκελο υπάρχει ήδη αρχείο με το ίδιο όνομα.
Οι προναφερόμενοι κώδικες :
1ος αποθήκευση σε φάκελο επιλογής μας
Κώδικας:
Public Function PicFolder() As String
    Dim blnSelect As Boolean
    Dim fld As Object

    Set fld = Application.FileDialog(4)
    fld.AllowMultiSelect = False
    blnSelect = fld.Show
    If blnSelect Then
        PicFolder = fld.SelectedItems(1)
    End If
End Function

Private Sub cmdPDF_ΔελτιοΠαραγγελιας_Click()
Dim strFolder As String
    strFolder = PicFolder
    If strFolder <> "" Then
    DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, , 
       "[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"
     
    DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, 
     strFolder & "\" & CStr(ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ) & "_Σύνολο Παραγγελιών_" & Format(Now(),
      "yyyymmdd") & ".pdf", True
    Else
        MsgBox "Δεν επιλέξατε φάκελο"
    End If
    DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub
Ο 2ος προειδοποίηση για την ύπαρξη αρχείου με το ίδιο όνομα
Κώδικας:
Private Sub Εντολή482_Click()
    Dim FileName As String

    FileName = "C:\Users\" & "ΔΠ." & CStr(ΚωδΔελτίουπαραγγελίας) & _
               "_κ.κ.." & CStr(Κείμενο218) & "_" & Format((Κείμενο194),
                   "yyyymmdd") & ".pdf"

    If Dir(FileName) <> "" Then
        If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
                  "Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
            DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, 
               FileName, True
        End If
    Else
        DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, 
            FileName, True
    End If
End Sub
Ευχαριστώ εκ των προτέρων
Τίμος
Απάντηση με παράθεση
  #2  
Παλιά 05-05-17, 09:41
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Τίμο δοκίμασε τον παρακάτω κώδικα:

Κώδικας:
Public Function PicFolder() As String
    Dim blnSelect As Boolean
    Dim fld As Object

    Set fld = Application.FileDialog(4)
    fld.AllowMultiSelect = False
    blnSelect = fld.Show
    If blnSelect Then
        PicFolder = fld.SelectedItems(1)
    End If
End Function

Private Sub cmdPDF_ΔελτιοΠαραγγελιας_Click()
    Dim strFolder As String, strFile As String
    strFolder = PicFolder
    If strFolder <> "" Then
        DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, , _
                         "[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"

        strFile = strFolder & "\" & CStr(ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ) & "_Σύνολο Παραγγελιών_" & _
                  Format(Now(), "yyyymmdd") & ".pdf"
        Exists strFile
    Else
        MsgBox "Δεν επιλέξατε φάκελο"
    End If
    DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub

Public Sub Exists(FileName As String)
    If Dir(FileName) <> "" Then
        If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
                  "Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbYes Then
            DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
               FileName, True
        End If
    Else
        DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
            FileName, True
    End If
End Sub
Σημείωση: Στον κώδικα αντικαταστάθηκε η σταθερά vbOK με την vbYes

Τελευταία επεξεργασία από το χρήστη kapetang : 06-05-17 στις 10:28. Αιτία: Σημείωση
Απάντηση με παράθεση
  #3  
Παλιά 05-05-17, 12:46
Όνομα: Τίμος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 13-03-2015
Μηνύματα: 44
Προεπιλογή

Καλησπέρα Γιώργο,
Σε ευχαριστώ για την άμεση απάντηση σου. Έβαλα τους τρεις κώδικες που έστειλες στην ΒΔ αλλά κάτι γίνεται με τον τελευταίο - "Public Sub Exists" - που αναφέρεται στην αντικατάσταση του αρχείου εφόσον υπάρχει ίδιο. Εμφανίζεται το MsgBox και εάν ζητήσεις αντικατάσταση του αρχείου δεν το κάνει. Μπορείς να κάνεις κάτι για να διορθωθεί και να δουλεύει ολοκληρωμένα;
Και κάτι άλλο προς διευκρίνιση, όπως είναι γραμμένος ο κώδικας "Public Sub Exists" γίνεται εξαγωγή αρχείου pdf από την έκθεση "RptΔελτία Παραγγελίας" για κάθε προμηθευτή. Για κάθε εντολή εξαγωγής αρχείου της ίδιας λογικής, δηλ. αποθήκευση σε φάκελο επιλογής μου και ερώτηση εάν υπάρχει ήδη, θα πρέπει να γράφω εκ νέου τον κώδικα "Public Sub Exists" - σωστά;

Ευχαριστώ
Τίμος
Απάντηση με παράθεση
  #4  
Παλιά 05-05-17, 13:51
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

1) Ο κώδικας, δε δοκιμάστηκε αφού δε διαθέτω τη ΒΔ.

2) Δε θα ξαναγράψεις τον κώδικα.

3) Μετά το μήνυμα πρόσθεσε τον κώδικα: Kill FileName και ξαναδοκίμασε.

Κανονικά πρέπει να διαγράφεται το παλιό αρχείο και να αποθηκεύεται το νέο.

4) Ο φάκελος στον οποίο αποθηκεύεται το αρχείο θα πρέπει να επιτρέπει αλλαγές
Απάντηση με παράθεση
  #5  
Παλιά 05-05-17, 14:07
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Τώρα το είδα άλλαξε το vbOk με το vbYes
Απάντηση με παράθεση
  #6  
Παλιά 05-05-17, 17:00
Όνομα: Τίμος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 13-03-2015
Μηνύματα: 44
Προεπιλογή

Γιώργο,
Τελικά μετά από αρκετές δοκιμές ανακάλυψα πως έχει πρόβλημα ο κώδικας που παραθέτω. Μου τον έστειλες σε προηγούμενο θέμα που είχα ζητήσει βοήθεια και παρόλου που απάντησα ότι δουλεύει, αλλά λόγω φόρτου εργασίας δεν είχα παρατηρήσει ότι δεν κάνει αντικατάσταση του αρχείου. Σήμερα το πρόσεξα από την ώρα στην ημερομηνία τροποποίησης του αρχείου στις ιδιότητες, παραμένει η αρχική και δεν αλλάζει εκτελώντας την εντολή κατά την διάρκεια της ίδιας μέρας.
Εάν μπορείς να βοηθήσεις θα ήταν χρήσιμο.

Κώδικας:
Private Sub Εντολή482_Click()
    Dim FileName As String
    FileName = "C:\Users\" & "ΔΠ." & CStr(ΚωδΔελτίουπαραγγελίας) & _
                "_κ.κ.." & CStr(Κείμενο218) & "_" & Format((Κείμενο194),_
                "yyyymmdd") & ".pdf"

    DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, , _
                    "[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"

    If Dir(FileName) <> "" Then
        If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
                  "Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
            DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
               FileName, True
        End If
    Else
           DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
            FileName, True
    End If
           DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub
Ευχαριστώ εκ των προτέρων
Τίμος
Απάντηση με παράθεση
  #7  
Παλιά 05-05-17, 17:10
Όνομα: Τίμος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 13-03-2015
Μηνύματα: 44
Προεπιλογή

Καλησπέρα γιώργο,
Και εγώ μόλις έστειλα την τελευταία ανάρτηση είδα την απάντηση σου :
Παράθεση:
Τώρα το είδα άλλαξε το vbOk με το vbYes
Έκανα την αντικατάσταση και τώρα δουλεύει, οπότε αγνόησε την τελευταία μου ανάρτηση.
Θα κάνω και τις αλλαγές στους προηγούμενους κώδικες και θα επανέλθω με απάντηση.

Ευχαριστώ για τον χρόνο σου

Τίμος
Απάντηση με παράθεση
  #8  
Παλιά 05-05-17, 17:26
Όνομα: Τίμος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 13-03-2015
Μηνύματα: 44
Προεπιλογή

Γιώργο,
Κάνοντας αντικατάσταση του vbOk με το vbYes δουλεύει τώρα και η εντολή με τον συνδιασμό των τριών κωδικών. Κάτι τελευταίο για να κλείσει το θέμα, το "Kill FileName" σε ποιο σημείο του κώδικα Public Sub Exists θα πρέπει να το προσθέσω ώστε να είναι εφαρμόσιμος και σε άλλες εντολές.

Κώδικας:
Public Sub Exists(FileName As String)
    If Dir(FileName) <> "" Then
        If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
                  "Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
            DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
               FileName, True
        End If
    Else
        DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
            FileName, True
    End If
End Sub
Ευχαριστώ
Τίμος
Απάντηση με παράθεση
  #9  
Παλιά 05-05-17, 18:06
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Αφού δουλεύει δε χρειάζεται να προστεθεί η εντολή Kill.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Εκθέσεις ] Εξαγωγή αρχείου σε μορφή pdf και σε θέση της επιλογής μου ΤΙΜΟΣ Access - Ερωτήσεις / Απαντήσεις 2 07-04-17 14:57
[ Πίνακες ] Επιλογή Επωνύμων από Λίστα και ταυτόχρονη συμπλήρωση του Ονόματος argisl Access - Ερωτήσεις / Απαντήσεις 4 01-06-16 20:38
[ Εκθέσεις ] Εξαγωγή αρχείου σε μορφή pdf με προειδοποίηση ύπαρξης με ίδιου όνομα ΤΙΜΟΣ Access - Ερωτήσεις / Απαντήσεις 2 04-12-15 08:44
[VBA] Χρήση μεταβλητής ονοματος αρχείου σε vlookup Βασίλης Καραχάλιος Excel - Ερωτήσεις / Απαντήσεις 0 14-10-14 19:57
[Γενικά] Ταυτόχρονη χρήση ίδιου αρχείου απο δύο χρήστες στο ίδιο τοπικό δίκτυο Βασίλης Καραχάλιος Excel - Ερωτήσεις / Απαντήσεις 5 03-04-14 08:47


Η ώρα είναι 22:04.