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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 17-03-14, 12:12
Όνομα: ΟΘΩΝΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2013
Μηνύματα: 28
Προεπιλογή Export/Import Modules,Userforms

Καλημέρα σε όλους υπάρχει κάποιος κώδικας ( vba excel ) για εξαγωγή ολων των userform από ένα βιβλίο και ταυτόχρονα να γίνει αντικατάσταση τους σε πολλά βιβλία που ήδη την περιέχουν?
Απάντηση με παράθεση
  #2  
Παλιά 21-03-14, 22:17
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Καλησπέρα!
Για να επιτραπεί η προγραμματιστική πρόσβαση στο μοντέλο αντικειμένου του έργου VBA

της Excel (εκεί ανήκουν οι φόρμες) πρέπει να ενεργοποιηθεί η αντίστοιχη επιλογή στις ρυθμίσεις

του κέντρου αξιοπιστίας (βλ.εικόνα).


Export/Import Modules,Userforms-trustvbproj.png


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


Κώδικας:
Sub TestCopyAndReplaceUserform()
    CopyAndReplaceUserform "UserForm1", ThisWorkbook.Path & "\MyFolder"
End Sub
όπου "UserForm1" = Το όνομα της φόρμας


και ThisWorkbook.Path & "\MyFolder ο φάκελος που περιέχει τα αρχεία με τις φόρμες προς αντικατάσταση.


Ο παραπάνω κώδικας καλεί την παρακάτω διαδικασία:


Κώδικας:
Sub CopyAndReplaceUserform(FormName As String, WorkbooksFolderPath As String)
    Dim vb_Component As VBComponent
    Dim FormFilename As String
    Dim msg As VbMsgBoxResult
    Dim wb As Workbook
    Dim fso As New Scripting.FileSystemObject
    Dim oFolder As Scripting.Folder
    Dim ofile As Scripting.File

    If Not fso.FolderExists(WorkbooksFolderPath) Then
        MsgBox "Ο φάκελος στη διαδρομή: '" & WorkbooksFolderPath & "' δεν βρέθηκε στο σύστημα!" _
               & vbLf & "Η διαδικασία θα διακοπεί.", vbExclamation
        Exit Sub
    End If

    msg = vbYes

    For Each vb_Component In ThisWorkbook.VBProject.VBComponents
        If vb_Component.Type = vbext_ct_MSForm Then
            If UCase(vb_Component.Name) = UCase(FormName) Then
                If Right(WorkbooksFolderPath, 1) <> "\" Then
                    WorkbooksFolderPath = WorkbooksFolderPath & "\"
                End If
                FormFilename = WorkbooksFolderPath & vb_Component.Name & ".frm"
                If Dir(FormFilename, vbDirectory) <> "" Then
                    msg = MsgBox("Tο αντικείμενο '" & FormName & "' υπάρχει ήδη." & vbLf _
                                 & "Θέλετε να αντικατασταθεί;", vbQuestion + vbYesNo)
                    If msg = vbYes Then
                        Kill FormFilename
                        Application.Wait Now + TimeSerial(0, 0, 1)
                    End If
                End If
                If msg = vbYes Then
                    vb_Component.Export FormFilename
                End If
                Exit For
            End If
        End If
    Next
    Set oFolder = fso.GetFolder(WorkbooksFolderPath)
    On Error GoTo ExitHere
    With Application
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        For Each ofile In oFolder.Files
            If UCase(fso.GetExtensionName(ofile.Path)) = "XLSM" Then
                Set wb = Workbooks.Open(ofile.Path)
                For Each vb_Component In wb.VBProject.VBComponents
                    If vb_Component.Type = vbext_ct_MSForm Then
                        If UCase(vb_Component.Name) = UCase(FormName) Then
                            wb.VBProject.VBComponents.Remove vb_Component
                            .Wait Now + TimeSerial(0, 0, 1)
                            wb.VBProject.VBComponents.Import (FormFilename)
                            wb.Save
                            Exit For
                        End If
                    End If
                Next
                wb.Close False
            End If
        Next
ExitHere:
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
    If Err <> 0 Then
        MsgBox "Σφάλμα: " & Err.Number & vbLf & Err.Description, vbExclamation
    End If

End Sub
Για να λειτουργήσουν οι παραπάνω κώδικες θα πρέπει στον VBE από το μενού Tools > References να επιλεχθούν οι εξής αναφορές:


Microsoft Scripting Runtime

και

Microsoft Visual Basic for Applications Extensibility 5.0 (βλ. εικόνα)


Εάν η τελευταία δεν βρίσκεται στη λίστα, πάτησε [Browse...] και επίλεξε το αρχείο VBE6EXT.OLB

στο φάκελο Program Files (ενδεχομένως x86)\Common Files\Microsoft Shared\VBA\VBA6\


Export/Import Modules,Userforms-vbarefs.png

Υπάρχει σχετική βοήθεια για προγραμματιστές στη σελίδα της Microsoft: Manipulating Projects with Add-Ins


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

Τάσος





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

Τελευταία επεξεργασία από το χρήστη Tasos : 22-03-14 στις 01:19.
Απάντηση με παράθεση
  #3  
Παλιά 21-03-14, 23:39
Όνομα: ΟΘΩΝΑΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 10-05-2013
Μηνύματα: 28
Προεπιλογή

Ευχαριστω πολυ για την πολυτιμη βοηθεια!!!
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] Export to Excel Ρούλα Access - Ερωτήσεις / Απαντήσεις 6 05-01-16 07:04
[Γενικά] Import txt στο excel TManolis99 Excel - Ερωτήσεις / Απαντήσεις 3 13-02-14 13:03
[ Πίνακες ] Update τιμών Πεδίων ενός πίνακα μέσω Excel Import Leader Access - Ερωτήσεις / Απαντήσεις 2 20-03-12 23:23
Export form results spooky Access - Ερωτήσεις / Απαντήσεις 7 31-05-10 18:13
[ Εκθέσεις ] H εικόνα δεν βγαίνει όταν κάνουμε export σε word 2003 jimvasiloudis Access - Ερωτήσεις / Απαντήσεις 1 17-03-10 22:10


Η ώρα είναι 14:34.