ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Αποθήκευση και αρίθμηση αρχείων

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 19-02-10, 08:39
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 01-02-2010
Μηνύματα: 8
Προεπιλογή Αποθήκευση και αρίθμηση αρχείων

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

Επανέρχομαι με ένα πρόβλημα που με απασχολεί εδώ και αρκετό καιρό.
θα ήθελα με το πάτημα ενός κουμπιού να αποθηκεύω ένα φύλλο από το τρέχον βιβλίο εργασίας
σαν νέο αρχείο xls. σε συγκεκριμένο φάκελο.

Το όνομα του νέου αυτού αρχείου θα πρέπει να έχει το πρόθεμα „001_“, & Όνομα αρχείου.
Παράδειγμα:

001_Όνομα αρχείου.xls, 002_Όνομα αρχείου.xls κοκ. δηλ. το πρόθεμα να αυξάνεται κατά μια μονάδα κάθε φορά που αποθηκεύω ένα νέο βιβλίο εργασίας.

Επίσης θα ήθελα από το φύλλο που θα αντιγραφεί σε νέο βιβλίο να αφαιρεθεί κώδικας που περιέχει.

Μέχρι τώρα τη διαδικασία αυτή την κάνω με το χέρι!!

Παρακαλώ τα φώτα σας!

Ευχαριστώ εκ των προτέρων

Γιώργος
Απάντηση με παράθεση
  #2  
Παλιά 19-02-10, 19:40
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 186
Προεπιλογή

Καλησπέρα Γιώργο!

Δες ένα παράδειγμα στο συνημμένο που κάνει ότι ακριβώς ζητάς.

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

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

Τα νέα βιβλία αποθηκεύονται στην ίδια διαδρομή με το "CreateClearBook.xls".
Εξέτασε τον κώδικα της διαδικασίας "CreateClearBook()" και αν σε βολεύει,
τροποποίησέ τον στα μέτρα σου.

Τα λέμε!
Γιάννης
Συνημμένα Αρχεία
Τύπος Αρχείου: zip CreateClearBook.zip (15,3 KB, 99 εμφανίσεις)
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #3  
Παλιά 20-02-10, 11:41
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 01-02-2010
Μηνύματα: 8
Προεπιλογή

Γιάννη καλημέρα και σ ευχαριστώ πολύ για το παράδειγμα σου!

Μου ήταν σχετικά εύκολο να το προσαρμόσω στα μέτρα μου τον μετρητή και τη διαδρομή,
ωστόσο το πρόβλημα που δημιουργείται είναι ότι η λίστα αρχείων που δημιουργείται μέσα στο αρχείο δεν μπορεί να είναι η πραγματική αφού στο συγκεκριμένο φάκελο αποθήκευσης θα αποθηκεύονται και άλλα αρχεία με την μορφή 001_Όνομα αρχείου.xls, 002_Όνομα αρχείου.xls κοκ. από άλλους συναδέλφους.
Έτσι αν ήδη υπάρχει το 002... αποθηκευμένο και το πρόγραμμα προτείνει το 002... θα πρέπει ή να αντικατασταθεί το ήδη υπάρχον, ή να ακυρώσω τη διαδικασία.

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

Δηλ. Αν το μεγαλύτερο πρόθεμα είναι το 008.. τότε να δημιουργηθεί το 009...

Πάνω σ αυτό θα ήθελα και πάλι τα φώτα σας.
Ευχαριστώ και πάλι

Γιώργος
Απάντηση με παράθεση
  #4  
Παλιά 25-02-10, 18:08
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Φίλε Γιώργο καλησπέρα!

Παραλίγο να σε ξεχάσουμε!
O Γιάννης (nisgia) κι εγώ, καταλήξαμε στις παρακάτω λύσεις για το ζητούμενο σου.

Λύση 1:

Κώδικας:
Function GetNewFilePrefix(ByVal strPath As String) As String
    Dim objFiles As Object
    Dim objFile As Object
    Dim strTemp As String
    Dim intMax As Integer

    With CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strPath) Then
            Set objFiles = .GetFolder(strPath).Files
            For Each objFile In objFiles
                strTemp = objFile
                If objFile.Type = "Microsoft Excel Worksheet" Then
                    strTemp = Mid(.GetFileName(strTemp), 1, 4)
                    If strTemp Like "###_" Then
                        If CInt(Left(strTemp, 3)) > intMax Then
                            intMax = CInt(Left(strTemp, 3))
                        End If
                    End If
                End If
            Next objFile
        Else
            MsgBox "Invalid Path!", vbExclamation
        End If
    End With
    GetNewFilePrefix = Format(intMax + 1, "000_")
End Function


Λύση 2:
Κώδικας:
Function NextFreeName(strPath$, strFile$) As String
    Dim strEnum%, sFile$
    strPath = strPath & IIf(Right(strPath, 1) <> "\", "\", "")
    sFile = Dir(strPath & "*" & strFile, vbNormal)
    Do Until sFile = ""
        strEnum = Application.Max(strEnum, IIf(IsNumeric(Left(sFile, 3)), Left(sFile, 3), 0))
        sFile = Dir
    Loop
    NextFreeName = strPath & IIf(strEnum = 0, "001_", _
            Format(strEnum + 1, "000_")) & strFile
End Function
Δες και το συνημμένο παράδειγμά (με τη δεύτερη λύση).

Ελπίζω να σε καλύψαμε!

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls XLEnumerateBooks.xls (60,5 KB, 99 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 26-02-10, 00:24
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 01-02-2010
Μηνύματα: 8
Προεπιλογή

Καλημέρα!

Γιάννη , Τάσο, σας ευχαριστώ πάρα μα πάρα πολύ για τον χρόνο σας!

Προσάρμοσα τους κώδικες και όλα είναι μια χαρά!

Να είστε όλοι καλά!
Απάντηση με παράθεση
  #6  
Παλιά 24-03-11, 02:17
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-09-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 75
Προεπιλογή

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

Τα ζητούμενα 3.
1) Πως μπορεί η καταγραφή να μην γίνεται στο τρέχον φύλλο εργασίας (Data) αλλά σε ένα άλλο φύλλο εργασίας (Backup) προσθέτοντας δεδομένα σε άλλες 2 στήλες
(“B” & “C) που θα τα παίρνει από την περιοχή (Date) (Το πρώτο και το τελευταίο μη κενό κελί).
2) Πως μπορεί η καταγραφή της διαδρομής του αρχείου να είναι τέτοια ώστε να δημιουργεί υπερσύνδεση (Hyperlink) .
Με κλικ να ανοίγει το αρχείο
3) Αν σβήσουμε τα δεδομένα από την περιοχή με όνομα (Data) το ζητούμενο είναι ένας κώδικας που να κάνει επαναφορά των δεδομένων (Reset) από το τελευταίο
αποθηκευμένο αρχείο.

(Σημείωση : Στο επισυναπτόμενο αρχείο έχω προσθέσει στο κώδικα το
Range("A3:C30").Select
ActiveWorkbook.Names.Add Name:="Data", RefersToR1C1:="=Sheet1!R3C1:R30C3"
που δημιουργεί και στο αρχείο εξαγωγής μια περιοχή με όνομα (Data) επειδή πιστεύω ότι αυτό εξυπηρετεί το 3ο ζητούμενο.)

Περιμένοντας τη βοήθειά σας
Σας ευχαριστώ εκ των προτέρων

Φιλικά
Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls CreateClearBook.xls (319,5 KB, 47 εμφανίσεις)
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[VBA] αποθήκευση ως pdf rmaria Excel - Ερωτήσεις / Απαντήσεις 16 22-12-20 19:06
[Γενικά] Εκτύπωση αρχείων φακέλων George R Excel - Ερωτήσεις / Απαντήσεις 0 04-04-15 20:11
Αυτόματη αρίθμηση εντύπου μετά από εκτύπωση ή αποθήκευση ΤΑΣΟΣ Access - Ερωτήσεις / Απαντήσεις 1 24-11-13 10:08
Περιηγητής αρχείων *.pdf σε Access Tasos Access samples - Χρήσιμα αρχεία & παραδείγματα 0 28-01-12 11:05
Resize επισυναπτόμενων αρχείων φωτογραφιών Flashgordon61 Outlook - Ερωτήσεις / Απαντήσεις 1 29-03-11 21:49


Η ώρα είναι 07:02.