Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Excel σε pdf (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/4729-excel-se-pdf.html)

dealer_xm 03-11-17 13:14

Excel σε pdf
 
1 Συνημμένο(α)
Γεια σας,

Θα ήθελα να ρωτήσω αν υπάρχει η δυνατότητα σε ένα αρχείο excel (που χρησιμοποιώ για την δημιουργία παραγγελιών) με τη χρήση vba να μπορούμε να το μετατρέψουμε σε pdf αλλά να επιλέξουμε συγκεκριμένες στήλες (A, C, D, E, F) και σειρές (μόνο όσες θα έχουν γραμμένα προϊόντα).
Σας στέλνω ένα δείγμα του αρχείου. Ευχαριστώ εκ των προτέρων.

Spirosgr 03-11-17 14:22

1 Συνημμένο(α)
Καλησπέρα

Το φύλλο 1, έχει κωδικό όνομα Sh1

Στο φύλλο, υπάρχουν τρια πεδία απ' όπου το .pdf,
θα «πάρει» τον τίτλο του.
Τα πεδία πρέπει να είναι «γεμάτα» και
χωρίς απαγορευμένους χαρακτήρες πχ / \ ? * κλπ για να τρέξει ο κώδικας.

Στον κώδικα υπάρχουν δυο UPath
Το πρώτο αποθηκεύει το .pdf, στην επιφ. εργασίας,
σε φάκελο με όνομα Φάκελος Παραγγελιών, τον οποίο δημιουργεί αυτόματα ο κώδικας.

Το δεύτερο αποθηκεύει το .pdf, στην ίδια διαδρομή με το αρχείο .xlsm «παραγγελία»,
σε φάκελο με όνομα Φάκελος Παραγγελιών, τον οποίο δημιουργεί αυτόματα ο κώδικας.

Δεν καταχωρούνται διπλότυπα .pdf αλλά αν έχουμε ίδιο τίτλο τότε
το νεώτερο αντικαθιστά το παλαιότερο.

Επιλέξτε όποιο θέλετε και αφήστε το άλλο ανενεργό.

dealer_xm 03-11-17 19:45

Καλησπέρα,
Σε ευχαριστώ πάρα πολύ για τη λύση σου. Είναι οτι ακριβώς χρειαζόμουν.
Μια ακόμα ερώτηση. Αν θέλουμε το αρχείο pdf να παίρνει το όνομα του αρχείου ecxel τι αλλαγή πρέπει να γίνει?

Spirosgr 03-11-17 20:15

Αντικατέστησε στον κώδικα τις γραμμές:
Κώδικας:

    DPath = Sh1.Range("cLastName").Value & " " & Sh1.Range("cFirstName").Value & _
          " " & Sh1.Range("DescriptionRange").Value & ".pdf"

Με αυτό (Αποτέλεσμα: παραγγελία.xlsm.pdf)
Κώδικας:

DPath = ThisWorkbook.Name & ".pdf"
Ή με αυτό (Αποτέλεσμα: παραγγελία.pdf)
Κώδικας:

DPath = Replace(ThisWorkbook.Name, ".xlsm", "") & ".pdf"
Μετά διέγραψε τις γραμμές:
Κώδικας:

    If Sh1.Range("cLastName").Value = vbNullString Or _
      Sh1.Range("cFirstName").Value = vbNullString Or _
      Sh1.Range("DescriptionRange") = vbNullString Then

        MsgBox "Δεν Έχετε Συμπληρώσει, Όλα Τα Πεδία Του Τίτλου.", , "Σφάλμα!"
        Exit Sub
    End If

ωστε να μην λαμβάνονται υπ' όψιν τα πεδία στο φύλλο, τα οποία μπορείς και να καταργήσεις.

dealer_xm 04-11-17 15:11

Σε ευχαριστώ, είσαι πρώτος.
Καλή συνέχεια.

Spirosgr 04-11-17 15:14

Να 'σαι καλά.


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

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2