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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 01-11-10, 18:49
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-09-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 66
Προεπιλογή Δημιουργία καθαρού βιβλίου

Θα ήθελα να ρωτήσω σχετικά με απάντηση - λύση που δώθηκε στο φίλο Γιώργο (Locos) στο θέμα αυτό εδώ.

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

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

Γιώργος

Τελευταία επεξεργασία από το χρήστη gr8styl : 02-11-10 στις 00:47. Αιτία: Διόρθωση συνδέσμου
Απάντηση με παράθεση
  #2  
Παλιά 02-11-10, 01:13
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από Flashgordon61 Εμφάνιση μηνυμάτων
Τι τροποποίηση πρέπει να γίνει στον κώδικα VBA ούτως ώστε το όνομα του αρχείου εξάγεται να μήν παίρνει το όνομα ClearBook.xls, αλλά ένα όνομα που θα το παίρνει από το κελί Α1του αρχείου.
Φίλε Γιώργο,
Στο πρώτο συνημμένο του φίλου Γιάννη CreateCLearBook.zip η γραμμή του κώδικα που αποθηκεύει το βιβλίο είναι η
Κώδικας:
        .SaveAs ThisWorkbook.Path & "\" _
                & Format(lngCopyNum, "000") & "_ClearBook.xls"
άλλαξε την σε
.SaveAs Range("A1").value

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

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

Έστω ότι το όνομα που θα πάρει το βιβλίο εργασίας μέσω του κώδικα βρίσκεται στο Φύλλο1 και στο κελί A1.
Αν πχ. το τρέχον φύλλο είναι το Φύλλο2, η τιμή που θα λάβει υπόψη του ο κώδικας θα είναι αυτή του κελιού Α1 του τρέχοντος φύλλου δηλ. του φύλου2 και όχι αυτή που έχουμε ορίσει στο φύλλο1.
Θα πρότεινα να οριστούν ονόματα που θα ζητούνται από τον κώδικα.
Επίσης, για να αποκτήσει περισσότερη ελαστικότητα η όλη διαδικασία , μπορούμε:
  1. να παραμετροποιήσουμε το όνομα του αρχείου προς αντιγραφή.
  2. να παραμετροποιήσουμε τη διαδρομή φακέλου όπου θα βρίσκεται.
  3. να παραμετροποιήσουμε το όνομα του φύλλου προς αντιγραφή.
  4. να παραμετροποιήσουμε την περιοχή που του φύλλου που θα αντιγραφεί.

Παραδειγματικά, ορίζουμε τα παρακάτω ονόματα:
  • WorkBookName = το όνομα του αρχείου προς αντιγραφή.
  • SheetToTransfer = το όνομα του φύλλου προς αντιγραφή.
  • File_Path = η διαδρομή φακέλου όπου θα αποθηκεύεται το αρχείο.
  • MyRange = η περιοχή που του φύλλου που θα αντιγραφεί.
Στα κελιά που αντιστοιχούν στα παραπάνω ονόματα περνάμε τις τιμές όπως παρακάτω:

  • WorkBookName = Αρχείο.xls
  • SheetToTransfer = Φύλλο2
  • File_Path = C:\Mytest
  • MyRange =A1:H100 (αν μείνει κενό, ο κώδικας θα πάρει την χρησιμοποιημένη περιοχή του Φύλλου2).

και χρησιμοποιούμε τον παρακάτω κώδικα,

Κώδικας:
Option Explicit

Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Sub CreateClearBook()
    Dim wbNewBook As Workbook
    Dim Sheets_InNewBook%, Calc&
    Dim wbName$, WKSToCopy$, strFilePath$, WKSRange As Range
    On Error Resume Next
    wbName = Range("WorkBookName")
    WKSToCopy = Range("SheetToTransfer")
    If Trim(Range("MyRange")) <> vbNullString Then
        Set WKSRange = Sheets(WKSToCopy).Range(Range("MyRange"))
    End If
    If WKSRange Is Nothing Then
        Set WKSRange = Sheets(WKSToCopy).UsedRange
    End If
    strFilePath = Range("File_Path")
    Calc = Application.Calculation
    With Application
        .ScreenUpdating = False
        Sheets_InNewBook = .SheetsInNewWorkbook
        .SheetsInNewWorkbook = 1
        If Calc <> xlCalculationManual Then .Calculation = xlCalculationManual
    End With
    On Error GoTo ErrHandler
    WKSRange.Copy
    Set wbNewBook = Workbooks.Add
    Range("A1").PasteSpecial (xlPasteAll)
    Range("A1").PasteSpecial (xlPasteColumnWidths)
    wbNewBook.SaveAs NextFreeName(strFilePath, wbName), ThisWorkbook.FileFormat
    ExitHere:
    On Error Resume Next
    wbNewBook.Close False
    With Application
        .SheetsInNewWorkbook = Sheets_InNewBook
        If .Calculation <> Calc Then .Calculation = Calc
    End With
    Exit Sub
ErrHandler:
    MsgBox Err.Description, vbExclamation, "Error: " & Err
    Resume ExitHere
End Sub

Function NextFreeName(strPath$, strFile$) As String
    Dim strEnum%, sFile$
    strPath = Replace(strPath & "\", "\\", "\")
    MakeSureDirectoryPathExists strPath
    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
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Κλείδωμα βιβλίου manolis Excel - Ερωτήσεις / Απαντήσεις 3 11-03-20 21:29
[Excel07] Δικαιώματα βιβλίου stam75 Excel - Ερωτήσεις / Απαντήσεις 5 21-02-16 19:40
βοήθεια βιβλίου ΤΑΣΟΣ Access - Ερωτήσεις / Απαντήσεις 1 27-05-11 11:21
[Excel07] ΜΟΡΦΟΠΟΙΗΣΗ ΒΙΒΛΙΟΥ alexkour Excel - Ερωτήσεις / Απαντήσεις 1 10-01-11 17:22
[Γενικά] Δημιουργία λίστας φύλλων ενός βιβλίου Billy Excel - Ερωτήσεις / Απαντήσεις 3 14-06-10 08:01


Η ώρα είναι 13:56.