Εμφάνιση ενός μόνο μηνύματος
  #6  
Παλιά 17-09-18, 08:42
Το avatar του χρήστη Spirosgr
Spirosgr Ο χρήστης Spirosgr δεν είναι συνδεδεμένος
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλημέρα.

Πριν απ' όλα,
για θέματα ΑΦΜ, υπάρχουν πολλά άρθρα που μπορεί να βρει κανείς,
με αναζήτηση στο forum.
Πιθανό να δείτε και περιπτώσεις που δεν σκεφτήκατε, όπως
αυτόματη συμπλήρωση μηδέν, ή ΑΦΜ με δύο μηδενικά μπροστά κλπ.

Μια παρατήρηση στον κώδικα του Γιώργου.
Η αποθήκευση στα Documents, δεν θα δουλέψει με ΧΡ, γιατί εκεί έχουμε
Documents and Settings

Γι' αυτό...
Ή θα βάλουμε μια Function, να ελέγχει το λειτουργικό και με βάση
το αποτέλεσμα, θα διαμορφώσουμε το path, manual με
If αυτό το λειτουργικό, βάλε ...το Χ path
If το άλλο βάλε...το Ψ path ή
θα βάλουμε το ThisWorkbook.Path, όπως θα το δούμε παρακάτω...

Να ξεκινήσουμε από το προηγούμενο post και το τρίτο ερώτημα.
Κώδικας:
Sub MyClear()
    Sheet1.Range("b4:b7,b9:b11,b13,b15:b16").ClearContents
    Sheet2.Range("b4:b7,b9:b11,b13,b15:b16").ClearContents
End Sub
Αυτός είναι ο τρόπος σύνταξης, για πολλαπλές περιοχές ανά φύλλο.
Αντικαθιστούμε τα Sheet1,Sheet2 με το κωδικό όνομα των πραγματικών φύλλων.

Πάμε τώρα στον κύριο κώδικα, mySaveAsExcel

Κατ' αρχάς στο τελείωμα του κώδικα, την ώρα που σώζει
επειδή πολλά έχουν δει τα μάτια μου, αντί του ActiveWorkbook
προτιμώ το ThisWorkbook.

Ανεξάρτητα με το λειτουργικό όποιων υπολογιστών, καλό είναι να ακολουθήσουμε το εξής:

Πάμε σε ένα φάκελο της επιλογής μας (πχ Documents ή παλιότερα Documents and settings)
και βάζουμε το κύριο βιβλίο μας.
*Optional, ανοίγουμε μια shortcut, στην επιφάνεια εργασίας.

Με αυτόν τον τρόπο, οι φάκελοι θα δημιουργηθούν στον επιλεγμένο...
με την χρήση ThisWorkbook.Path, στον κώδικα

Τώρα, πάμε στην επεξήγηση...

Έχω βάλει κάπου (οπουδήποτε) το βιβλίο.
Εκεί λοιπόν θέλω να έχω:
Ένα φάκελο ΥΕΒ
Μέσα σε αυτόν, ένα φάκελο 2018 (το αλλάζω κάθε χρονιά) και
Μέσα σε αυτόν ένα αντίγραφο του βιβλίου με όνομα από το κελί a1
Κώδικας:
Option Explicit
Const myMainFolderName As String = "ΥΕΒ"
Const mySubFolderName As String = "2018"
Dim BadChars As Variant
'------------------------------------------------------------
Sub mySaveAsExcel()
    Dim j As Integer
    Dim myCell As Range
    Dim BookName As String, myPath As String

    'Αν το κελί a1, είναι κενό = Έξοδος

    Set myCell = Sheet1.Range("A1")
    If Len(myCell.Value) = 0 Then
        MsgBox "Γράψε ό,τι θέλεις..."
        Exit Sub
    End If

    'Αν δεν υπάρχει φάκελος ΥΑΒ = Δημιουργία

    If Len(Dir(ThisWorkbook.Path & "\" & myMainFolderName, vbDirectory)) = 0 Then
        MkDir ThisWorkbook.Path & "\" & myMainFolderName
    End If

    'Αν δεν υπάρχει υποφάκελος 2018 = Δημιουργία

    If Len(Dir(ThisWorkbook.Path & "\" & myMainFolderName & "\" & mySubFolderName, vbDirectory)) = 0 Then
        MkDir ThisWorkbook.Path & "\" & myMainFolderName & "\" & mySubFolderName
    End If

    'Αντικατάσταση μη επιτρεπτων χαρακτήρων (κελί a1) με κενό (όχι space, αλλά τίποτα...)

    myPath = ThisWorkbook.Path & "\" & myMainFolderName & "\" & mySubFolderName
    BookName = Trim(myCell.Value) & " " & Format(Now(), "dd-mm-yyyy_hh:mm:ss") & ".xls"
    BadChars = VBA.Array(">", "<", "?", "[", "]", ":", "|", "*", "/", "\", """")

    For j = LBound(BadChars) To UBound(BadChars)
        BookName = VBA.Replace(BookName, BadChars(j), "")
    Next j

    'Αποθήκευση αντιγράφου

    ThisWorkbook.SaveCopyAs Filename:=myPath & "\" & BookName
End Sub
Σημειώσεις:
*Αντικαθιστούμε το Sheet1,με το κωδικό όνομα του φύλλου.
*Αντικαθιστούμε τις σταθερές φακέλων με όποιο τίτλο θέλουμε.
*Αντικαθιστούμε την κατάληξη .xls, με, πχ .xlsm (optional)
*Το κύριο βιβλίο, παραμένει να το κάνουμε ό,τι θέλουμε
*Αν θέλουμε τα νέα αρχεία να αντικαθιστούν τα παλιά,
δεν θα βάλουμε ώρα ή και ημέρα (optional) στον τίτλο αρχείου και
θα απενεργοποιήσουμε τα Alerts

Τελευταία επεξεργασία από το χρήστη Spirosgr : 17-09-18 στις 09:10. Αιτία: Συμπληρωματικές σημειώσεις
Απάντηση με παράθεση