Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Εκτύπωση] Εκτύπωση πολλών αρχείων, πολλών επιλογών (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1923-ektiposi-pollon-arxeion-pollon-epilogon.html)

mak 10-06-12 18:49

Εκτύπωση πολλών αρχείων, πολλών επιλογών
 
1 Συνημμένο(α)
Καλησπέρα σε όλους στην κοινοτητα,
Θα ήθελα την βοήθεια σας σχετικά με μια λιστα αρχειων (πανω απο 100 τον αριθμο) τα οποια ειναι ιδια ως προς αριθμο των φυλλων, τα ονόματα των φυλλων που περιεχουν και χρειάζομαστε να κανουμε διαφορες εκτυπωσεις, διαφόρων φύλλων σε διαφορετικους εκτυπωτες συμφωνα με ενα πλανο που φαινεται στο συννημενο αρχειο .
Μπορει να γινει το παραπανω με VBA η οποια θα πέρνει τα δεδομενα απο τη λιστα του αρχειου
(αν πρέπει να εκτυπωθει ?, ποιά φυλλα ?, απο ποια σελιδα εως ποιά ?, σε ποιόν εκτυπωτη ?)

Ευχαριστώ

Tasos 10-06-12 22:44

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

Αγαπητέ Μανώλη, στο αρχείο που επισυνάπτω, μπορείς να δεις μια λύση του ζητούμενου σου.

Δεν μπόρεσα να τη δοκιμάσω αλλά είμαι σίγουρος ότι θα λειτουργήσει αν τα στοιχεία που περιέχονται (Ονόματα εκτυπωτών, φύλλων κλπ.) είναι σωστά.

Για να εκτυπώσεις σε Adobe PDF μέσω του αυτοματισμού αυτού, φρόντισε στις ρυθμίσεις του προγράμματος (Adobe Writer) να δώσεις μια σταθερή διαδρομή φακέλου εξαγωγής των *.PDF που θα εκτυπώνονται.

Καλή συνέχεια!

Με εκτίμηση

Τάσος

mak 10-06-12 23:40

Τασο καλησπερα
Ευχαριστω για την αμεση απαντηση σου.
Ομως κατι δεν παει καλα. Σε παραδειγμα με 4 αρχεια και ενω τα 3 εχουν "NO" στις στηλες Ε, J, και Ο, και 1 "YES" με κλικ στο "εκτυπωση" προσπαθει να τα ανοιξει ολα και στις στηλες Ν και Ο φερνει ως αποτελεσμα "Νο Action" και δεν προχωραει το 1 σε εκτυπωση π.χ σε Adobe PDF.

Tasos 11-06-12 01:20

Σου έδωσα ένα παράδειγμα χωρίς να γνωρίζω τυχόν ιδιαιτερότητες και λεπτομέρειες.

Ο κώδικας αυτός δεν έχει κάποιο λάθος.

Αυτά που κάνει είναι:

Ανοίγει ένα ένα τα βιβλία, εκτυπώνει τα φύλλα που πρέπει και τελικά τα κλείνει χωρίς αποθήκευση.

Αν υπάρχει το φύλλο (πχ, το φύλλο "ΑΠΟΔΕΙΞΕΙΣ") τότε αν υπάρχει "YES" στο κατάλληλο κελί κάθε φορά (στήλες E, J, O) θα επιχειρήσει να εκτυπώσει.
Αν δεν υπάρχει το φύλλο θα γράψει "Error!"

Αν η εκτύπωση σταλεί στον εκτυπωτή χωρίς να προκληθεί σφάλμα θα γράψει "ΟΚ!".
Διαφορετικά θα γράψει "Error!"

Αν στο κελί υπάρχει "NO" τότε ο κώδικας δεν θα προχωρήσει στην εκτύπωση του φύλλου και θα γράψει "No Action".

Αν ο εκάστοτε εκτυπωτής δεν εκτυπώσει τότε θα πρέπει να αναζητήσεις την αιτία του προβλήματος στον εκτυπωτή. Όχι στην Excel.

Αυτό ισχύει και για τον εκτυπωτή PDF.

Έκανες τις απαραίτητες ρυθμίσεις σ' αυτόν τον εκτυπωτή;

Παράθεση:

ενω τα 3 εχουν "NO" στις στηλες Ε, J, και Ο, και 1 "YES"
Το 1 "YES" τι είναι; Τέταρτο κελί Yes/No??

Δεν μπορώ να γνωρίζω τι δεν πάει καλά αφού το μόνο που βλέπω είναι το αρχείο Excel που επισύναψες. Δεν είμαι μπροστά στον υπολογιστή σου .

Αυτό που μπορώ να κάνω είναι να προσθέσω τη δυνατότητα ελέγχου αν και τα τρία φύλλα έχουν την τιμή "NO"
και έτσι να μην ανοίξει το βιβλίο χωρίς λόγο (δεν διευκρινίστηκε στο αρχικό σου μήνυμα).

Άλλαξε λοιπόν τον κώδικα του συνημμένου μου με τον παρακάτω:

Κώδικας:

Sub XLPrintJob()
    Dim wks As Worksheet, wb As Workbook, c As Range, i As Integer, x As Integer
    With Application
        .ShowWindowsInTaskbar = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With
    On Error Resume Next
    For Each c In ActiveSheet.Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
        x = 1
        If Dir(c.Value, vbDirectory) <> vbNullString Then
            If c.Offset(, 4).Value = "NO" And _
              c.Offset(, 9).Value = "NO" And _
              c.Offset(, 14).Value = "NO" Then GoTo NextWB

            Set wb = Workbooks.Open(Filename:=c.Value, ReadOnly:=True)
            For i = 1 To 3
                Set wks = wb.Sheets(c.Offset(, x).Value)
                If Err <> 0 Then
                    c.Offset(, 15 + i).Value = "Error!"
                    Err.Clear
                    GoTo NextWks
                End If
                If c.Offset(, x + 3).Value = "YES" Then
                    wks.PrintOut _
                            From:=c.Offset(, x + 1).Value, _
                            To:=c.Offset(, x + 2).Value, _
                            ActivePrinter:=c.Offset(, x + 4).Value, _
                            Collate:=True
                    If Err <> 0 Then
                        c.Offset(, 15 + i).Value = "Error!"
                        Err.Clear
                    Else
                        c.Offset(, 15 + i).Value = "OK!"
                    End If
                Else
                    c.Offset(, 15 + i).Value = "No Action"
                End If
NextWks:
                x = x + 5
            Next
            wb.Close SaveChanges:=False
        End If
NextWB:
    Next
    With Application
        .ShowWindowsInTaskbar = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With

End Sub

Φιλικά

Τάσος

mak 11-06-12 09:16

Τασο καλημέρα,
Συγνωμη μαλλον δεν σου εδωσα να καταλαβεις σωστά, τι(?) δεν κανει και σε μπερδεψα. Sorry!!
Αυτο που λεω ειναι οτι μεσα στο κωδικα, του λες να σου δωσει "ΟΚ", "Errror" ή "No Action" με offset σε στηλή που πέφτει πανω σε στηλη δεδομενων (Ν,Ο) και σβηνει τα δεδομενα και οχι στις στηλες Q,R,S, που ειναι για αυτα τα αποτελεσματα.

Τωρα το 1 "YES" δεν ειναι τεταρτο κελι.
Ενα παραδειγμα ειναι, σε ενα απο τα αρχεια, να κανει print σε pdf το ενα φυλλο (π.χ. sheetName_1 "ΚΑΤΑΣΤΑΣΗ") αλλα δεν κανει τίποτα.
(ενω πχ μεσα στο αρχειο αν γραψω σε ενα module ActiveSheet.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Adobe PDF" λειτουργει και δημιουργει το pdf κανονικά
Τα ονόματα των φύλλων, εκτυπωτων,κτλ τα τσεκαρα, είναι σωστα.

Επισης να αναφερω οτι ολα τα αρχεια, περιέχουν συνδεσεις με άλλα αρχεία και οταν τα ανοίγεις ζηταει ενημέρωση ή οχι των συνδεσεων (excel 2003).
Δεν ξερω αν αυτό μπερδευει.

Παρένθεση για προσθηκη !!!
Αν μπορουμε μεσα στη VBA να υπαρχει default η απαντηση (πχ. ναι) στην ενημερωση των συνδεσεων ωστε να μην κλικαρουμε τοσες φορές όσα τα αρχεια προς εκτυπωση.

Ευχαριστώ προκαταβολικα

Φιλικά

Μανώλης

mak 11-06-12 09:56

1 Συνημμένο(α)
Επισυναπτω και αρχειο PrintList_3 μετα απο εκτελεση "εκτυπωση"

Tasos 11-06-12 10:46

1 Συνημμένο(α)
Καλημέρα σε όλους!

Φίλε μου, το αρχείο σου περιέχει μια "παγίδα"::cool:

Το κελί V3 περιέχει τη λέξη Yes + 1 κενό!

Σου επισυνάπτω ένα παράδειγμα με κάποιες μετατροπές (λαμβάνει υπόψη του τα νέα δεδομένα) που πιστεύω ότι θα σε καλύψει.

Τώρα για την ενημέρωση ή οχι των συνδέσεων, πρόσθεσα τον απαραίτητο κώδικα στο αρχείο.

Αν παρόλα αυτά το μήνυμα παραμένει τότε σου προτείνω να διαβάσεις το παρακάτω:
Έλεγχος του μηνύματος εκκίνησης για την ενημέρωση των συνδέσεων - Excel - Office.com

Καλή σου μέρα!

Τάσος

mak 11-06-12 12:34

Καλημέρα σε όλους

Τασό, Αρχικά να ζητησω συγνωμη για την ταλαιπωρια...

Το θεμα με το κενο διαστημα σε κελι. με εχει ξαναμπερδεψει :angry:
Μου αρεσει λεει που τσεκαρα ονοματα και σχετικα ....

Τωρα φυσικα, λειτουργει άψογα !!!
και με τις ενημερωσεις συνδεσεων ..οκ !!

Σε ευχαριστω παρα πολύ για το χρόνο σου

Φιλικά

Μανωλης


Η ώρα είναι 10:25.

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


Search Engine Optimization by vBSEO 3.3.2