Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Τιμολόγιο - Αποθήκευση και εκκαθάριση δεδομένων (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2318-timologio-apothikeysi-kai-ekkatharisi-dedomenon.html)

Kostas K 30-01-13 16:50

Τιμολόγιο - Αποθήκευση και εκκαθάριση δεδομένων
 
1 Συνημμένο(α)
Καλησπέρα σε όλους.
Έχω δημιουργήσει ένα πρότυπο τιμολόγιο (επισυναπτόμενο αρχείο.) Ψάχνοντας λίγο κατάφερα με macro εντολές κάνοντας κλικ στο πλαίσιο με τα στοιχεία της εταιρείας να σώζει το αρχείο και αυτόματα να καθαρίζει τα δεδομένα (Α18:Η36) και να αυξάνει την αρίθμηση του τιμολογίου.
Έχω όμως τρία προβλήματα και ελπίζω στη βοήθεια σας.

1)Δεν καταφέρνω να γίνεται εκκαθάριση των δεδομένων που είναι highlighted με κίτρινο χρώμα.

2) έχω χρησιμοποιήσει το add in, numbers2text, αλλά σε κάποια νούμερα μου επιστρέφει το μήνυμα που βλέπεται στον κόκκινο κύκλο. Ίσως να μην καταλαβαίνω κάτι αλλά το κελί πηγή Η44 είναι μορφοποιημένο με δυο δεκαδικά ψηφία.

3) Πώς θα μπορούσα να τυπώνω τρία αντίτυπα με μια εντολή, πάνω σε κάθε αντίτυπο όμως να τυπώνεται αντιστοίχως: για τον πελάτη, για το λογιστήριο, στέλεχος. Έχω δει ένα παράδειγμα στο forum με το αρχείο για την έκδοση αποδείξεων αλλά δε ξέρω πώς να το εφαρμόσω στο αρχείο.
Ελπίζω να μη σας κούρασα.

Ευχαριστώ
Κώστας

Spirosgr 30-01-13 23:44

1 Συνημμένο(α)
Καλησπέρα
Με βάση προηγούμενο ερώτημα φίλου
http://www.ms-office.gr/forum/excel-...ikefalida.html
το οποίο είναι ακριβώς το ίδιο έχει προσαρμοστεί απλά στο φύλλο σου ο κώδικας
Χρησιμοποίησα τον ίδιο κώδικα (ο οποίος βέβαια δέχεται κάποιες βελτιώσεις "-και λίγο αυτοκριτική δεν κάνει κακό!!!-") μιας και τον είχα φτιάξει .
Το πρόβλημα σου που δεν μπορείς να καθαρίσεις κάποια δεδομένα στα κίτρινα κελιά έχει να κάνει με την συγχώνευση κελιών
Το έχουμε πει επανειλημμένα να αποφεύγετε τις συγχωνεύσεις
τώρα δεν έχει συγχωνευμένα και οι 2 περιοχές καθαρίζονται μαζί
Καλή συνέχεια!
ΥΓ Ξέχασα το θέμα με το =inWords(H44)
σε 'μένα δεν παρουσίασε πρόβλημα για ξανά δες το

Tasos 31-01-13 08:38

Καλημέρα!

Η συνάρτηση =inWords(H44) μπορεί να επεξεργαστεί αριθμούς που έχουν μέχρι 2 δεκαδικά ψηφία.
Η πραγματική τιμή του κελιού H44 είναι: 646,9023 (4 δεκ. ψηφία).

Για να εμφανίσει η inWords() τα επιθυμητά αποτελέσματα πρέπει να περιοριστούν τα δεκαδικά ψηφία του κελιού H44 χρησιμοποιώντας τον τύπο: =ROUND(SUM(G42:I42);2).

Τάσος

Kostas K 31-01-13 14:20

Σας ευχαριστώ και τους δυο για τη βοήθεια.

Τάσο θα χρησιμοποιήσω τον τύπο που δίνεις.

Σπύρο, θα ήθελα μια επεξήγηση για την εκτύπωση.
Μπερδεύτηκα λίγο με το Print areaDoc. Τι ακριβώς εννοείς λέγοντας "Ονομάζοντας printareadoc"? Μπορεί να είναι κάτι απλό αλλά χάθηκα..
Σε ευχαριστώ εκ των προτέρων.

Spirosgr 31-01-13 15:22

Καλησπέρα
Κώστα είναι η ονομασία που θα δώσουμε σε όλη την περιοχή που θέλουμε να εκτυπώνετε
(ουσιαστικά όλο το τιμολόγιο) και αυτό το όνομα χρησιμοποιούμε και στον κώδικα
Μπορείς να το αλλάξεις με κάτι άλλο αρκεί να το αλλάξεις και στον κώδικα
Εννοείτε ότι και εδώ ισχύει ο κανόνας τα ονόματα χωρίς κενά
Καλή συνέχεια!

Kostas K 31-01-13 15:47

Σπύρο σε ευχαριστώ για την απάντηση.
Δυστυχώς θα κάνω κατάχρηση της καλοσύνης σου.
Δε ξέρω αν κάνω κάτι λάθος αλλά όταν δίνω εντολή εκτύπωσης τυπώνεται ένα μόνο αντίγραφο χωρίς καμία επισήμανση στο κελί που έχεις ονομάσει "rngcopyfor" (πελάτης, λογιστήριο, στέλεχος) παρά το γεγονός ότι στα κελιά rngone κλπ υπάρχει ονομασία. Επίσης μου τυπώνει μια δεύτερη κενή σελίδα. Πρέπει να κάνω κάτι εγώ?

Spirosgr 31-01-13 16:38

Φίλε Κώστα δεν υπάρχει καμία κατάχρηση
μπορείς να ζητάς ότι θέλεις χωρίς "φόβο και πάθος" αφού βλέπεις ότι κάτι δεν πάει καλά
Να κάνω μια αφελή ερώτηση θέλω...
Έχεις περάσει τον κώδικα σε κάποιο κουμπί και πατώντας το κουμπί δεν εκτυπώνει τα 3 αντίγραφα ?

Kostas K 31-01-13 16:50

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

Σε ευχαριστώ.

Spirosgr 31-01-13 17:03

Να 'σαι καλά
Καλή συνέχεια!

Kostas K 01-02-13 12:30

Σπύρο Καλημέρα,
Επανέρχομαι διότι το αρχείο μου παρουσιάζει το εξής πρόβλημα.
Βάζω δεδομένα στο αρχείο xlsm που έχεις ανεβάσει, κάνω κανονικά save, και όταν ανοίγω το σωσμένο τιμολόγιο (.xlsx) για να το τυπώσω, στην εκτύπωση μου φέρνει το πρωτότυπο χωρίς τα δεδομένα που έχω βάλει. Να σημειώσω ότι στην προεπισκόπηση δείχνει κανονικά όλα τα δεδομένα.
Εάν βάλω δεδομένα στο .xlsm χωρίς όμως να κάνω save και δώσω εντολή για εκτύπωση τότε όλα είναι καλά.
Μήπως κάνω κάτι λάθος?

Σε ευχαριστώ

Κώστας

Spirosgr 01-02-13 13:03

Καλημέρα
Ο κώδικας που έχεις για την αποθήκευση
Sub SaveInvWithNewName()
λίγο πριν κλείσει ενεργοποιεί τον κώδικα
Sub NextInvoice()
για να καθαρίσει τα δεδομένα
Ή εκτυπώνεις και μετά αποθηκεύεις (άρα και μετά καθαρίζεις)
ή αποδεσμεύεις την εκκαθάριση από τον κώδικα αποθήκευσης
και τον χρησιμοποιείς μόνο του
Καλή συνέχεια!
ΥΓ Προτιμητέα η 2η περίπτωση

Kostas K 01-02-13 14:12

Σε ευχαριστώ.

Θα ακολουθήσω τη συμβουλή σου για το 2η λύση.

Kostas K 01-02-13 17:31

Σπύρο θα μου επιτρέψεις να σου κάνω ακόμα μια ερώτηση αν και καταλαβαίνω ότι σε έχω ζαλίσει.

Όταν δίνω την εντολή Print από το xlsm υπάρχει κανονικά σε κάθε φύλο η επισήμανση πελάτης, λογιστήριο,αρχείο.

Όταν αποθηκεύω τα αρχεία σε xlsx και κατόπιν προσπαθώ να τυπώσω οι ενδείξεις δεν εμφανίζονται. Αυτό σημαίνει ότι πρέπει να τυπώνω πριν σώσω το αρχείο και από τη μορφή xlsm ή κάνω πάλι κανένα "θαύμα"??

Spirosgr 01-02-13 18:20

Καλησπέρα
Όταν αποθηκεύεις σε .xlsx οι ιδιότητες του .xlsm δεν υπάρχουν πλέον και άρα δεν μπορεί να εκτελεστεί κώδικας από εκεί.
Η αποθήκευση προφανώς γίνετε για να υπάρχει ένα αντίγραφο του τιμολογίου για ώρα ανάγκης (έχασε ο πελάτης το πρωτότυπο και θέλει ένα αντίγραφο πχ) ή για επεξεργασία αρχείου (στατιστικά ή αμφισβητεί κάποιο τιμολόγιο ο πελάτης και του δίνουμε αντίγραφο)
Κανονικά η διαδικασία πρέπει να είναι :
1 εισάγω στο τιμολόγιο δεδομένα στο .xlsm
2 εκτυπώνω 3 αντίγραφα από το .xlsm
3 αποθηκεύω στο αρχείο μου το αντίγραφο . xlsx και
4 καθαρίζω δεδομένα στο .xlsm
Αν για οποιοδήποτε λόγο θέλω να ανακαλέσω το .xlsx και να εκτυπώσω τότε ή μου αρκεί να έχω 1 γενικό αντίγραφο ή εξ αρχής αποθηκεύω .xlsm με όλες τις ιδιότητες και τον κώδικα
(προσωπικά δεν το θεωρώ σκόπιμο)

Kostas K 01-02-13 18:23

Σε ευχαριστώ πολύ για τις απαντήσεις σου.

Καλό βράδυ

beck 13-10-19 19:16

Παράθεση:

Αρχική Δημοσίευση από Spirosgr (Μήνυμα 13685)
Καλησπέρα
Κώστα είναι η ονομασία που θα δώσουμε σε όλη την περιοχή που θέλουμε να εκτυπώνετε
(ουσιαστικά όλο το τιμολόγιο) και αυτό το όνομα χρησιμοποιούμε και στον κώδικα
Μπορείς να το αλλάξεις με κάτι άλλο αρκεί να το αλλάξεις και στον κώδικα
Εννοείτε ότι και εδώ ισχύει ο κανόνας τα ονόματα χωρίς κενά
Καλή συνέχεια!

και που θα ξερει το συστημα οτι το printareadoc ειναι το A1:A51 ?????

Spirosgr 13-10-19 21:17

Αν διάβασες όλο το θέμα και μελέτησες το αρχείο,
θα δεις που το λέει...
Και δεν είναι a1:a51, αλλά a1:i51

beck 17-10-19 20:27

Αν υποτεθεί ότι η περιοχή εκτύπωσης είναι
Α1:Ι51
Ονομάζουμε PrintAreaDoc
εδω ??

μονο εδω το βλεπω και δεν μπορω να καταλαβω που ειναι το Α1:Ι151 στον κωδικα που εχεις στο VBA

Sorry αν ειναι εμφανες, αλλα δεν το καταλαβαινω !!

Spirosgr 17-10-19 21:15

Καλά το βρήκες εκεί, αλλά εκεί είναι μια απλή περιγραφή...
Στον κώδικα είναι η ονομασία PrintAreaDoc, και μόνο αυτό φτάνει..
Κώδικας:

Sheet1.PageSetup.PrintArea = "PrintAreaDoc"
Και κάτι ακόμα, που είδα μιας και το αρχείο είναι αρκετά παλίο.
Θέλει προσαρμογές όπως πχ εδώ:
Κώδικας:

NewFN = "C:\Documents and Settings\...
που παίζει στα παλιά Win XP...

beck 18-10-19 17:02

θα το δοκιμασω ,
ευχαριστω

beck 20-10-19 16:36

εξακολουθω να μην καταλαβαινω πως ξερει ο κωδικας οτι η printarea ειναι η Α1:Ι51 και οχι η Α19:Η88 π.χ.

Spirosgr 20-10-19 19:59

1 Συνημμένο(α)
Διογένη.

Θα έπρεπε με βάση την απλή απάντηση μου,
αυτή, εδώ:
Κώδικας:

Sheet1.PageSetup.PrintArea = "PrintAreaDoc"
και ανοίγοντας το Name Manager, να είχες κατανοήσει τι γίνεται,
τουλάχιστον σε ένα τόσο απλό ερώτημα.
Ο κώδικας «διαβάζει» μια ονομασμένη και ορισμένη περιοχή...
Δες και την εικόνα...

Αν και τώρα δεν σου είναι κατανοητό, δεν μπορώ να κάνω κάτι...

beck 26-10-19 17:21

ειμαι πολυ καινουργιος στο VBA, αυτη την εικονα παραδειγμα που μου εστειλες δεν την ειχα δει ποτε.
τα ευκολως εννοουμενα για εσενα ειναι πυρινικη φυσικη για εμενα !!
τωρα γινεται πιο κατανοητο ,
θα αρχισω να προσπαθω να το βγαλω,
ευχαριστω για την απαντηση,


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

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


Search Engine Optimization by vBSEO 3.3.2