Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > Δεν τα μεταφέρει με τη σωστή σειρά

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 13-12-20, 23:53
Όνομα: Θάνος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-11-2020
Μηνύματα: 31
Προεπιλογή Δεν τα μεταφέρει με τη σωστή σειρά

Καλησπέρα στην ομάδα.
Εχω σε φάκελο πολλά pdf αρχεία με αύξουσα σειρά πχ. αρχείο1.pdf,αρχείο2.pdf, αρχείο3.pdf κτλ.
Θέλω να αντιγράψω τα ονόματά τους σε μια στήλη excel.
Δίνω τον παρακάτω κώδικα, αλλά μου βγάζει το αρχείο1.pdf μετά το αρχείο10.pdf,το αρχείο2.pdf μετά το αρχείο20.pdf κτλ. Μπορεί να διορθωθεί ;
Option Explicit
Sub GetFileNames()
Dim xRow As Long
Dim xDirect$, xFname$, InitialFoldr$
InitialFoldr$ = "C:\"
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Επιλέξτε τον φάκελο με την λίστα των αρχείων"
.InitialFileName = InitialFoldr$
.Show
If .SelectedItems.Count <> 0 Then
xDirect$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirect$, 7)
Do While xFname$ <> ""
ActiveCell.Offset(xRow) = xFname$
xRow = xRow + 1
xFname$ = Dir
Loop
End If
End With
End Sub
Απάντηση με παράθεση
  #2  
Παλιά 15-12-20, 08:32
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 08-12-2020
Μηνύματα: 153
Προεπιλογή

Το πρόβλημα σου είναι ότι η Dir διαβάζει και σορτάρει με Text Order ενώ εσυ χρειάζεσαι Numerical Order
Πιθανόν να υπάρχουν και άλλες λύσεις αλλά μια λύση είναι :
Αποθηκεύει την αναζήτηση σε μια δομή...εγώ σκέφτομαι κάτι σε Directory και με αυτό φτιάχνεις 1 Array ...αλλά μπορείς να φτιάξεις και κατευθείαν το Array (Κάνοντας Redim κάθε φορά)
Αυτό το Array το σορτάρεις
https://stackoverflow.com/questions/...-sort-function
Θα χρειαστεί κάποιο tweaking για να κάνεις extract την αριθμητική αξία.
Απάντηση με παράθεση
  #3  
Παλιά 15-12-20, 09:49
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 999
Προεπιλογή

Καλημέρα Θάνο,

Δοκίμασε τον παρακάτω κώδικα να δεις αν είναι αυτό που ζητάς:
Κώδικας:
Option Explicit

Sub GetFileNames()
    Dim xRow As Long, xCol As Long, MyCell As String
    Dim xDirect$, xFname$, InitialFoldr$
    InitialFoldr$ = "C:\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = Application.DefaultFilePath & "\"
        .Title = "Επιλέξτε το φάκελο με την λίστα των αρχείων"
        .InitialFileName = InitialFoldr$: .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        
        xDirect$ = .SelectedItems(1) & "\"
        xFname$ = Dir(xDirect$, 7)
        Do While xFname$ <> ""
            ActiveCell.Offset(xRow) = xFname$
            ActiveCell.Offset(xRow, 1) = Mid(xFname$, 1, Len(xFname$) - 4)
            xRow = xRow + 1
            xFname$ = Dir
        Loop
        
        xCol = ActiveCell.Column + 2
        xRow = Cells(Rows.Count, xCol - 1).End(xlUp).Row
        MyCell = "OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),,-1)"
        Range(Cells(ActiveCell.Row, xCol), Cells(xRow, xCol)).Formula = _
            "=RIGHT(" & MyCell & ",SUM(LEN(" & MyCell & ")-LEN(SUBSTITUTE(" & MyCell & ",{0,1,2,3,4,5,6,7,8,9},""""))))"
        
        Range(Cells(ActiveCell.Row, xCol - 2), Cells(Rows.Count, xCol)).Sort _
            Key1:=Cells(ActiveCell.Row, xCol), Order1:=xlAscending, DataOption1:=xlSortTextAsNumbers
        Range(Cells(ActiveCell.Row, xCol - 1), Cells(Rows.Count, xCol)).ClearContents
    End With
End Sub
Όπως αναφέρει και ο Γιάννης, η ταξινόμηση δε γίνεται σε επίπεδο αριθμού αλλά σε επίπεδο κειμένου, π.χ. το 10 είναι μικρότερο του 2, γιατί συγκρίνεται ένα-ένα ψηφίο και όχι όλος ο αριθμός μαζί.

Στον παραπάνω κώδικα χρησιμοποιούνται δύο βοηθητικές στήλες, όπου στην πρώτη εξάγεται το όνομα του αρχείου χωρίς την κατάληψη και στη δεύτερη εξάγονται μόνο οι αριθμοί. Τέλος, ταξινομούνται οι τρεις στήλες ως προς τη στήλη με τους αριθμούς και καθαρίζονται οι δύο τελευταίες στήλες ώστε να μείνει η πρώτη των αρχείων.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #4  
Παλιά 15-12-20, 21:13
Όνομα: Θάνος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-11-2020
Μηνύματα: 31
Προεπιλογή

Καλησπέρα. Χρήστο, στον κώδικα που μου έδωσες φαίνεται πολύ γρήγορα ότι τα βάζει σε μια σειρά, στη συνέχεια τα εξαφανίζει και εμφανίζει αυτή τη συνάρτηση
Απάντηση με παράθεση
  #5  
Παλιά 15-12-20, 21:14
Όνομα: Θάνος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-11-2020
Μηνύματα: 31
Προεπιλογή

=RIGHT(OFFSET(INDIRECT(ADDRESS(ROW();COLUMN()));;-1);SUM(LEN(OFFSET(INDIRECT(ADDRESS(ROW();COLUMN()) );;-1))-LEN(SUBSTITUTE(OFFSET(INDIRECT(ADDRESS(ROW();COLUM N()));;-1);{0\1\2\3\4\5\6\7\8\9};""))))
Απάντηση με παράθεση
  #6  
Παλιά 15-12-20, 23:15
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 999
Προεπιλογή

Καλησπέρα Θάνο,

Μολις έφτιαξα ένα νέο βιβλίο εργασίας, έτρεξα τον κώδικα και δε βλέπω κάποιο πρόβλημα. Παραμένουν ταξινομημένα τα ονόματα των αρχείων με την κατάληξη μόνο.

Ανάλογα που είναι το τρέχον κελί, μπαίνουν τα ονόματα των αρχείων με την κατάληξη, στη διπλανή στήλη τα ονόματα χωρίς την κατάληξη και πιο δίπλα τα νούμερα.

Έλεγξε αν υπάρχουν παλιά δεδομένα στις διπλανές στήλες που μπορεί να χαλάνε την ταξινόμηση.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #7  
Παλιά 15-12-20, 23:59
Όνομα: Θάνος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-11-2020
Μηνύματα: 31
Προεπιλογή

Χρήστο ,Σε ευχαριστώ πολύ. Δουλεύει μια χαρά. Μπράβο Να είσαι πάντα καλά. Το ψάχνω καιρό τώρα, Είσαι φοβερός, Τι να πώ !!!!
Απάντηση με παράθεση
  #8  
Παλιά 16-12-20, 05:04
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Αγαπητοί φίλοι καλημέρα!

Θα ήθελα δείτε στο αρχείο που επισυνάπτω μια διαφορετική προσέγγιση εμφάνισης αρχείων σε φύλλο εργασίας χωρίς VBA.


Επίσης, αν αυτό επιτρέπεται μπορείτε να μετονομάσετε τα αρχεία σας με μορφή αριθμού 000001.pdf, 000002.pdf κλπ, για να λειτουργήσει η ταξινόμηση κανονικά.

Μέσα στο αρχείο περιέχεται κώδικας που κάνει μαζική μετονομασία αν αυτό είναι επιθυμητό..

Περισσότερες λεπτομέρειες στο αρχείο.

Αν υπάρξει κάποια απορία, παρακαλώ γράψτε στο φόρουμ.

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

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm PdfFiles.xlsm (23,1 KB, 15 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #9  
Παλιά 16-12-20, 20:59
Όνομα: Θάνος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 30-11-2020
Μηνύματα: 31
Προεπιλογή

Μπορείτε να μου δώσετε οδηγίες ;
α) που θα τρέξω την εντολή RenameMyFiles().
β) Επίσης που θα τρεξω το Sub RenameMyFiles()
FormatNummericFilenames Foldername:=Range("FolderPath").Value, _
ExtensionName:=Range("FileFilter").Value, _
nFormat:="0000" 'μπορείς να αλλάξεις το μήκος του προθέματος όσο χρειαστεί.

End Sub

Δεν το καταλαβαίνω
Απάντηση με παράθεση
  #10  
Παλιά 17-12-20, 15:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Άνοιξε το αρχείο που επισυνάπτω και πάτησε το κουμπί: Μετονομασία αρχείων...
Στο διάλογο που θα εμφανιστεί επίλεξε
  1. Τον φάκελο με τα PDF
  2. Τον φάκελο που θα αντιγραφούν τα αρχεία με το νέο όνομα.
Πάτησε "Μετονομασία"

Αφού μετονομαστούν τα αρχεία σου με επιτυχία θα ανοίξει ο φάκελος που τα περιέχει.


Κατόπιν συμπλήρωσε στο κελί Β1 του αρχείου από το προηγούμενο μου μήνυμα τη διαδρομή του φακέλου που περιέχει τα αρχεία με το νέο όνομα.

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

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm FileRenamer.xlsm (26,4 KB, 10 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Σωστή απάντηση Gogosbmx Excel - Ερωτήσεις / Απαντήσεις 6 29-05-18 06:18
[VBA] ΔΕΝ ΜΟΥ ΜΕΤΑΦΕΡΕΙ ΤΟ ΟΛΟΓΡΑΦΩΣ ΣΤΗΝ ΑΠΟΘΗΚΕΥΣΗ ΚΑΙ ΣΤΗΝ ΕΚΤΥΠΩΣΗ ΔΗΜΗΤΡΗΣ8519 Excel - Ερωτήσεις / Απαντήσεις 0 05-08-17 22:59
[ Φόρμες ] ΒΟΗΘΕΙΑ ΓΙΑ ΣΩΣΤΗ ΣΥΝΤΑΞΗ ΚΩΔΙΚΑ smasak Access - Ερωτήσεις / Απαντήσεις 0 11-05-17 15:38
[Μορφοποίηση] Ερώτηση για σωστή χρηση IF alexkour Excel - Ερωτήσεις / Απαντήσεις 1 23-01-11 19:36
[Συναρτήσεις] Ερώτηση για σωστή χρηση IF alexkour Excel - Ερωτήσεις / Απαντήσεις 2 17-01-11 18:41


Η ώρα είναι 08:49.