Gryzor Δημοσ. 19 Φεβρουαρίου 2010 Δημοσ. 19 Φεβρουαρίου 2010 Καλημέρα παιδιά! Στη δουλειά μου ανέκυψε η ανάγκη για μία ΠΟΛΥ χρονοβόρα εργασία και θα ήθελα να δω αν μπορεί να αυτοματοποιηθεί... Συγκεκριμένα, έχω ένα αρχείο Excel με κάποιες εκατοντάδες κωδικούς (προϊόντων). Εγώ καλούμαι να ψάξω σε ένα φάκελο στο δίκτυο που έχει φωτογραφίες και να τραβήξω τα αρχεία εκείνα που αναφέρονται στο εξελόφυλλό μου. Περιτό να πω πως, εκτός από πολύ χρονοβόρο πράγμα, θα μου κάνει και το μυαλό ζελέ... Υποψιάζομαι πως αν ξέρει κάποιος, είναι ενδεχομένως πολύ εύκολο. Αλλά δεν ξέρω Μπορεί κανείς να βοηθήσει; Ευχαριστώ - θα χρωστάω τεράστια ευγνωμωσύνη... Στη χειρότερη, υπάρχει κάποιο πρόγραμμα που να σου επιτρέψει να ψάξεις για πολλαπλά αρχεία; Βρίσκω μόνο search&replace για πολλαπλά... Θ ΥΓ σε κάποιες περιπτώσεις οι φωτό έχουν filename που δεν συμφωνεί 100% με του αρχείου - μπορεί να έχει κάποιους χαρακτήρες επιπλέον. Άρα θα χρειαστεί και κάποιο wildcard... YG2 μού'ρχεται να κλάψω!
citizen Δημοσ. 21 Φεβρουαρίου 2010 Δημοσ. 21 Φεβρουαρίου 2010 Τπ εννοεις "να τραβήξω τα αρχεία εκείνα που αναφέρονται στο εξελόφυλλό μου" ? Να ενσωματοσεις τις αντιστοιχες φωτο στο excel διπλα στους κωδικούς ? Να καταγραψεις το ονομα του αρχειου στο excel σε κελι διπλα στους κωδικούς ? Να διορθωσεις τα ονοματα των αρχείων ? Να μεταφερεις τα "αχρηστα" αρχεία σε αλλο folder ?
Gryzor Δημοσ. 22 Φεβρουαρίου 2010 Μέλος Δημοσ. 22 Φεβρουαρίου 2010 Έχεις δίκιο - εννοώ να τις ρίξω π.χ. στο φάκελο που είναι το εξελόφυλλό μου...
Highlander Δημοσ. 23 Φεβρουαρίου 2010 Δημοσ. 23 Φεβρουαρίου 2010 Έχεις δίκιο - εννοώ να τις ρίξω π.χ. στο φάκελο που είναι το εξελόφυλλό μου... Αν θες να κάνεις αυτό που νομίζω, μπορείς να κάνεις ένα DIR > IMAGES.TXT και μετά να το κάνεις Import στο Excel. Από εκεί και πέρα με VLOOKUP μπορείς να παίξεις και να κάνεις αυτός που θες.
Gryzor Δημοσ. 24 Φεβρουαρίου 2010 Μέλος Δημοσ. 24 Φεβρουαρίου 2010 Συγγνώμη - ίσως δεν ήμουν σαφής αρκετά: -Έχω ένα excel sheet στο οποίο, στο πρώτο column του οποίου υπάρχουν κωδικοί -Έχω κι ένα φάκελο (στο σκληρό ή στο δίκτυο) με φωτογραφίες. -Μέρος του filename των φωτογραφιών είναι οι κώδικες που υπάρχουν στο αρχείο μου -Θέλω να μπορώ να αντιγράφω τα αρχεία των οποίων το filename αντιστοιχεί στους κωδικούς της λίστας μου, σε ένα άλλο φάκελο. Δηλαδή, δεν με ενδιαφέρει να βρω τα ονόματα των αρχείων, αλλά τα αρχεία αυτά καθεαυτά... Ο λόγος είναι ότι μπορεί να θέλω να βρω, πχ, 200 κωδικούς, αλλά ο φάκελος με τις φωτό να έχει 500 φωτογραφίες... Ευχαριστώ και πάλι και καλημέρα
Highlander Δημοσ. 24 Φεβρουαρίου 2010 Δημοσ. 24 Φεβρουαρίου 2010 Συγγνώμη - ίσως δεν ήμουν σαφής αρκετά: -Έχω ένα excel sheet στο οποίο, στο πρώτο column του οποίου υπάρχουν κωδικοί -Έχω κι ένα φάκελο (στο σκληρό ή στο δίκτυο) με φωτογραφίες. -Μέρος του filename των φωτογραφιών είναι οι κώδικες που υπάρχουν στο αρχείο μου -Θέλω να μπορώ να αντιγράφω τα αρχεία των οποίων το filename αντιστοιχεί στους κωδικούς της λίστας μου, σε ένα άλλο φάκελο. Δηλαδή, δεν με ενδιαφέρει να βρω τα ονόματα των αρχείων, αλλά τα αρχεία αυτά καθεαυτά... Ο λόγος είναι ότι μπορεί να θέλω να βρω, πχ, 200 κωδικούς, αλλά ο φάκελος με τις φωτό να έχει 500 φωτογραφίες... Ευχαριστώ και πάλι και καλημέρα Ίσως να έχω καταλάβει λάθος, αλλά... Έστω το EXCEL: Code 0001 0002 0003 Έστω ο φάκελος: IMG0000.jpg IMG0001.jpg IMG0002.jpg IMG0003.jpg IMG0004.jpg Αν θες να βρεις και να αντιγράψεις τα bold τότε σου ξανα-προτείνω το παραπάνω. Θα βρεις την αντιστοίχηση και πάνω στο ίδιο ή σε άλλο βιβλίο του excel θα φτιάξεις ένα batch file. Copy Α1 c:\images Το αποθηκεύεις σας TXT, rename σε .ΒΑΤ και το τρέχεις. Αντίστοιχη περίπτωση είχα που ήθελα να κάνω import κάτι εικόνες σε SQL και είχα τους κωδικούς σε XLS. Με ελάχιστο κόπο έφτιαξα το παρακάτω: TEXTCOPY.exe /SSQLSERVER\DB /Usa /Padmin /DTESTDB /TTable887 /C Photo /FC:\Images\img150007.jpg /I /W"WHERE ID=150007"
Gryzor Δημοσ. 24 Φεβρουαρίου 2010 Μέλος Δημοσ. 24 Φεβρουαρίου 2010 Διάβολε, ίσως έχω χάσει κάτι! Όντως θέλω να βρω τα bold και να τα αντιγράψω (έστω στο φάκελο του excel), αλλά ΑΑΑΑΑΑ τώρα κατάλαβα που είδα την επεξήγησή σου...!!! Ήλπιζα να γινόταν με ένα vbs μια που νομίζω ότι έχει έτοιμα file ops functions, αλλά κι αυτό δουλεύει... Wow, δεν το είχα σκεφτεί από αυτή την άποψη! Σ'ευχαριστώ -- θα το δοκιμάσω!!!!!!
citizen Δημοσ. 24 Φεβρουαρίου 2010 Δημοσ. 24 Φεβρουαρίου 2010 Αν οι κωδικοι ειναι code1 code2 code3 code4 code44 και οι φωτο ειναι code1.jpg code2kaikati.bmp code3333.tif code4.trexagyreye code44.bmp code451.bmp θα δουλεψει επειδή το code4 και το code44 επικαλυπτονται το code44 θα προκαλεσει επαναντιγραφη αλλα αυτο δεν εχει σημασία Αν οι κωδικο ειναι στη στηλη Α , τοτε στις διπλανες στηλες (αν ειναι κενες) θα συμπληρωθουν τα πραγματικα ονοματα των αρχείων που αντιγραφτηκαν για καθε κωδικο (προς περαιτερω χρηση) Γραψε και τρεξε τη μακροεντολη Public Sub getfiles() Dim filename As String Sheets("Sheet1").Select 'Αντί για Sheet1 βάλε το πραγματικό Sheet Range("A1").Select 'Αντί για A1 βάλε το πραγματικό πρωτο cell ChDrive "C" 'Αντί για C βάλε το γραμμα του δισκου που ειναι αποθηκευμένες οι φωτογραφιες ChDir "c:\test\photos" 'Αντί για c:\test\photo βάλε το path που ειναι αποθηκευμένες οι φωτογραφιες While ActiveCell.Value <> "" cellval = ActiveCell.Value Filename = Dir(cellval + "*.*") n = 0 Do n = n + 1 ActiveCell.Offset(0, 1).Select If ActiveCell.Value = "" Then ActiveCell.Value = Filename If Filename <> "" Then FileCopy Filename, ActiveWorkbook.Path + "\" + Filename Filename = Dir End If Loop Until Filename = "" ActiveCell.Offset(1, -n).Select Wend End Sub (εχε backup το αρχειο σου μην με ....βριζεις
Highlander Δημοσ. 24 Φεβρουαρίου 2010 Δημοσ. 24 Φεβρουαρίου 2010 Ντεν ξέρει VBS καρντια μου. Θα το αναλύσω όμως αυτό που έγραψες εδώ
Gryzor Δημοσ. 24 Φεβρουαρίου 2010 Μέλος Δημοσ. 24 Φεβρουαρίου 2010 @citizen: διαβάζοντας τον κώδικά σου ανακαλύπτω πόσο έχω σκουριάσει... κάποιο καιρό πριν πιθανότατα να καταφερνα κάτι και μόνος μου, αλλά άααααααααχ μας έφαγε η δουλειά... Σε χιλιοευχαριστώ (και σένα), θα το δοκιμάσω - εννοείται!!! ---------- Προσθήκη στις 15:31 ---------- Προηγούμενο μήνυμα στις 13:37 ---------- @Citizen: ναιιιιιιιιιιι δούλεψε! Και, πάνω στην ώρα, γιατί κάτι που έγραψα σε C δεν παίζει με τίποτα... Αλλά, μία ερωτησούλα: του θέτεις Filename = Dir(cellval + "*.*") τί γίνεται αν οι φωτογραφίες μου έχουν filenames όπως categorynamecodenumberblahblah.jpg? Κοινώς, αν κάτι προηγείται του κώδικα; Ευχαριστώ και πάλι
citizen Δημοσ. 25 Φεβρουαρίου 2010 Δημοσ. 25 Φεβρουαρίου 2010 @citizen: διαβάζοντας τον κώδικά σου ανακαλύπτω πόσο έχω σκουριάσει... κάποιο καιρό πριν πιθανότατα να καταφερνα κάτι και μόνος μου, αλλά άααααααααχ μας έφαγε η δουλειά... Σε χιλιοευχαριστώ (και σένα), θα το δοκιμάσω - εννοείται!!! ---------- Προσθήκη στις 15:31 ---------- Προηγούμενο μήνυμα στις 13:37 ---------- @Citizen: ναιιιιιιιιιιι δούλεψε! Και, πάνω στην ώρα, γιατί κάτι που έγραψα σε C δεν παίζει με τίποτα... Αλλά, μία ερωτησούλα: του θέτεις Filename = Dir(cellval + "*.*") τί γίνεται αν οι φωτογραφίες μου έχουν filenames όπως categorynamecodenumberblahblah.jpg? Κοινώς, αν κάτι προηγείται του κώδικα; Ευχαριστώ και πάλι Χαρα μου που βοηθησα... αρκει να γραψουμε Filename = Dir("*"+cellval + "*.*") βεβαια αν οι κωδικοι σου ειναι αριθμοι ή μοιαζουν θα εχεις αρκετες ταυτοποιησεις δηλ. στο code 12345 θα αντιγραφει και το asta12345.jpg kai to brasta12345678.tif Για αυτο (αν και δεν το ζητησες) εβαλα να συμπληρωνονται τα αρχεια στα διπλανα κελια ωστε να τσεκαρεις το αποτελεσμα. Σημ. προφανως αν το διπλανο κελι δεν εχει εγγραφή παει να πει οτι δεν υπαρχει αντιστοιχο αρχείο. ΥΓ Αν το διπλανα κελια εχουν εγγραφες , τοτε δεν ενημερωνονται (το εκανα για να μην καταστραφουν data. Αν δεν υπαρχουν data στα διπλανα κελια τοτε μπορεις να αφαιρεσεις τον ελεγχο και να γραφωντε παντα . Η εντολη ελεγχου ειναι η γραμμη If ActiveCell.Value = "" Then ActiveCell.Value = Filename Καντη απλα ΑctiveCell.Value = Filename Φιλικα
Gryzor Δημοσ. 25 Φεβρουαρίου 2010 Μέλος Δημοσ. 25 Φεβρουαρίου 2010 Σήμερα ξημέρωσε μία από τις καταραμένες ημέρες.... Κατ'αρχάς, το Filename = Dir("*"+cellval + "*.*") το δοκίμασα χθες και δεν έπαιξε για κάποιο λόγο - φαίνεται προφανές, αλλά σταμάταγε (δεν θυμάμαι με τί λόγο). Έβαλα μπρος να ξανατρέξω το χθεσινό και (εκεί πάει το "καταραμένη")... δεν! Δες το συνημμένο - μου πετάει Run-time error '13': type mismatch ... wtf?? O ίδιος κώδικας που έτρεξα και χθες - copy/paste το έκανα το άτιμο!!! [edit] Παρατήρησα ότι κολλάει όταν φτάνει σε κελί το οποίο έχει ώς κωδικό σκέτο αριθμό, χωρίς γράμμα (υπάρχουν και τέτοιοι). Αλλά γιατί;....
citizen Δημοσ. 25 Φεβρουαρίου 2010 Δημοσ. 25 Φεβρουαρίου 2010 Προφανως τα κελια δεν εχουν δηλωθει σαν text και αποδιδει αριθμο integer στη cellval. Προσθεσε στην αρχη του κωδιακα τη γραμμη dim cellval as string και πες μου αν δουλευει (αυτα παθαινεις οτν βαριεσαι να δηλωσεις τις μεταβλητες) To ξαναδοκιμασα σε μενα και δουλευει
Gryzor Δημοσ. 26 Φεβρουαρίου 2010 Μέλος Δημοσ. 26 Φεβρουαρίου 2010 Και... ναι... δουλεύει. Είμαι κατασυγκινημένος! Ένα πέρασμα κάνω και τρέχει, φαίνεται να δουλεύει, θα το τσεκάρω και πιο ενδελεχώς!!! Το μόνο πρόβλημα που έχω είναι ότι τερματίζει εαν βρει κενό κελί. Καταλαβαίνω ότι είναι λόγω του ελέγχου για το τέλος της λίστας, αλλά υπάρχει τρόπος να του ορίσω το πραγματικό range και απλά να αγνοεί τα κενά; Φιλολογική ερώτηση, έτσι κι αλλιώς μπορώ να τσεκάρω για κενά αυτόματα ή (πιο απλό) να αλλάζω τα κενά με κάτι άλλο... Σε προσκυνώ Θ
citizen Δημοσ. 26 Φεβρουαρίου 2010 Δημοσ. 26 Φεβρουαρίου 2010 Και... ναι... δουλεύει. Είμαι κατασυγκινημένος! Ένα πέρασμα κάνω και τρέχει, φαίνεται να δουλεύει, θα το τσεκάρω και πιο ενδελεχώς!!! Το μόνο πρόβλημα που έχω είναι ότι τερματίζει εαν βρει κενό κελί. Καταλαβαίνω ότι είναι λόγω του ελέγχου για το τέλος της λίστας, αλλά υπάρχει τρόπος να του ορίσω το πραγματικό range και απλά να αγνοεί τα κενά; Φιλολογική ερώτηση, έτσι κι αλλιώς μπορώ να τσεκάρω για κενά αυτόματα ή (πιο απλό) να αλλάζω τα κενά με κάτι άλλο... Σε προσκυνώ Θ Φυσικα ... κοψε την While ActiveCell.Value <> "" και στη θεση της βαλε for k=1 to 600 (τον αριθμο που ξερεις) σβησε και την Wend και στη θεση της βαλε next k Επειδη ομως με κενο cellval η dir θα παρει τη μορφη dir **.* βάλε αμεσως μετα την cellval = ActiveCell.Value μια γραμμη ελεγχου if cellval="" then cellval="keno_kelli_asxetos_kwdikos" επειση τετοιο αρχειο φανταζομαι δεν θα υπαρχει θα το προσπερναει ....
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.