Forum

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

gfevran 29-07-14 12:43

PrintPreview
 
1 Συνημμένο(α)
Γεια σας παιδιά,
Θέλω μέσα από μια UserForm μέσω τριών OptionButton να κάνω προεπισκόπηση εκτύπωσης σε τρία φύλλα (φύλλο 1, φύλλο 2, φύλλο 3) το πρόβλημα μου είναι ότι δεν μπορώ να κάνω προεπισκόπηση και στα 3 φύλλα αλλά μέχρι τα δύο! Ανεβάζω συνημμένο για περισσότερη κατανόηση του θέματος.
Ευχαριστώ για όποια βοήθεια.

kapetang 29-07-14 14:52

Καλησπέρα

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

Κώδικας:

Private Sub cmdPrintPreview_Click()
    Dim vSheets As Variant
    Dim vPrintAreas As Variant
    Dim vOpButtons As Variant
    Dim i As Long
   
    'Εδώ ορίζονται τα φύλλα εργασίας για προεπισκόπηση
    vSheets = Array("Φύλλο1", "Φύλλο2", "Φύλλο3")
   
    'Εδώ καθορίζουμε τις αντίστοιχες περιοχές εκτύπωσης για κάθε φύλλο
    sPrintArea = Array("$F$6:$L$16", "$F$6:$L$16", "$F$6:$L$16")
   
    'Εδώ καθορίζουμε τα ονόματα των αντίστοιχων Option Buttons
    vOpButtons = Array("OptionButton1", "OptionButton2", "OptionButton3")

    For i = 0 To UBound(vSheets)
        If Me.Controls(vOpButtons(i)).Value Then
            Worksheets(vSheets(i)).PageSetup.PrintArea = sPrintArea(i)
            Me.Hide
            Worksheets(vSheets(i)).PrintPreview
            Me.Show
            Exit For
        End If
    Next
End Sub

Φιλικά/Γιώργος

gfevran 30-07-14 08:32

Καλημέρα Γιώργο,
Σ' Ευχαριστώ για την άμεση απάντηση
Δοκίμασα τον κώδικα και λειτουργεί τέλεια, είμαι εκτός Αθηνών και δεν έχω εκτυπωτή να δω αν με αυτόν τον κώδικα μπορώ να κάνω και εκτυπώσεις ή θέλει συμπληρωματικό κώδικα.

Φιλικά
Γιώργος

Spirosgr 30-07-14 11:36

Καλημέρα
Μιας και το είχα από παλιά και μια εκδοχή χωρίς Array & Loop με χρήση If.

Κώδικας:

Private Sub cmdPrintPreview_Click()
    Dim PR1 As Range, PR2 As Range, PR3 As Range 'Ορισμός μεταβλητών
    Set PR1 = Sheet1.Range("$F$6:$L$16") ' Set στις περιοχές εκτύπωσης
    Set PR2 = Sheet2.Range("$F$6:$L$16")
    Set PR3 = Sheet3.Range("$F$6:$L$16")

    If OptionButton1 Then ' Αν το κουμπί (είναι true = δεν χρειάζεται) τότε
        Unload Me ' Ξεφόρτωσε ώστε να μην υπάρχει διένεξη
        PR1.PrintPreview ' Κάνε προεπισκόπηση (ή εκτύπωση PrintOut)
    End If
    If OptionButton2 Then ' Επανάληψη όσο χρειάζεται [2]
        Unload Me
        PR2.PrintPreview  'Για εκτύπωση  βάζουμε .PrintOut Copies:=1
        'και αν θέλουμε Αντικατάσταση =1 με Range("Copies1").Value και μια λίστα
        'πχ 1 έως 10 για επιλογή αντιγράφων)
    End If
    If OptionButton3 Then ' Επανάληψη όσο χρειάζεται [3]
        Unload Me
        PR3.PrintPreview
    End If
End Sub

Αντικατέστησε τα Sheet1,2,3 με Φύλλο 1,2,..κλπ
Μπορείς να τεστάρεις χωρίς εκτυπωτή ως εξής:
Πάμε Πίνακας ελέγχου > Συσκευές και εκτυπωτές > Microsoft XPS Document Writer
και επιλογή σαν κύριο εκτυπωτή.
Κάνε δοκιμή και θα έχεις ένα "εικονικά" εκτυπωμένο αρχείο στην επιφάνεια εργασίας.
Ξαναβάλε τον εκτυπωτή σου σαν κύριο.

gfevran 30-07-14 13:47

Γεια σου Σπύρο,
Δούλεψε τέλεια!, και είδα και την εκτύπωση μέσω του εκτυπωτή Writer όπως μου υπέδειξες.
Θα ήθελα αν γίνεται μετά την έξοδο από την προεπισκόπηση ή το τέλος της εκτύπωσης,
να εμφανίζεται πάλι η userForm χωρίς να χρειάζεται να πατήσω το πλήκτρο.

Σ' Ευχαριστώ Σπύρο πολλές πολλές φορές για όσα μου έχεις προσφέρει.

Φιλικά
Γιώργος

Spirosgr 30-07-14 18:50

Καλησπέρα
Έχεις αυτούς τους 2 κώδικες σε module

Κώδικας:

Sub ShowUserform()
    UserForm1.Show
End Sub

Sub OpenUserform()
    UserForm1.Show
End Sub

Το κουμπί που ανοίγει την φόρμα είναι συνδεμένο με τον (sub OpenUserform) δεύτερο.

Διέγραψε τον πρώτο και βάλε τον τίτλο της sub δηλαδή μόνο το OpenUserform μετά από κάθε PR1.PrintPreview, PR2.PrintPreview και PR3.PrintPreview
και πριν το End If ή
Ακόμα καλύτερα μόνο μια φορά μετά το τελευταίο End If και πριν το End sub.

gfevran 30-07-14 19:03

Ο.Κ Με την παρεμβολή OpenUserForm δούλεψε μια χαρά


Η ώρα είναι 20:38.

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


Search Engine Optimization by vBSEO 3.3.2