Note: The other languages of the website are Google-translated. Back to English

Πώς να εκτελέσετε μια μακροεντολή ταυτόχρονα σε πολλά αρχεία βιβλίου εργασίας;

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

Εκτελέστε μια μακροεντολή ταυτόχρονα σε πολλά βιβλία εργασίας με κώδικα VBA


Εκτελέστε μια μακροεντολή ταυτόχρονα σε πολλά βιβλία εργασίας με κώδικα VBA

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

1. Κρατήστε πατημένο το ALT + F11 για να ανοίξετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

2. Κλίκ Κύριο θέμα > Μονάδα μέτρησηςκαι επικολλήστε την ακόλουθη μακροεντολή στο Μονάδα μέτρησης Παράθυρο.

Κωδικός VBA: Εκτελέστε την ίδια μακροεντολή σε πολλά βιβλία εργασίας ταυτόχρονα:

Sub LoopThroughFiles()
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.xls*")
        Do While xFileName <> ""
            With Workbooks.Open(xFdItem & xFileName)
                'your code here
            End With
            xFileName = Dir
        Loop
    End If
End Sub

Note: Στον παραπάνω κώδικα, αντιγράψτε και επικολλήστε τον δικό σας κωδικό χωρίς το Σε τίτλος και Sub End υποσέλιδο μεταξύ του Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName) και Τέλος με σενάρια. Δείτε το στιγμιότυπο οθόνης:

doc εκτελέστε πολλά αρχεία μακροεντολών 1

3. Στη συνέχεια πατήστε F5 κλειδί για την εκτέλεση αυτού του κώδικα, και a Αναζήτηση εμφανίζεται το παράθυρο, επιλέξτε έναν φάκελο που περιέχει τα βιβλία εργασίας που θέλετε να εφαρμόσετε σε αυτήν τη μακροεντολή, δείτε το στιγμιότυπο οθόνης:

doc εκτελέστε πολλά αρχεία μακροεντολών 2

4. Και στη συνέχεια κάντε κλικ στο κουμπί OK κουμπί, η επιθυμητή μακροεντολή θα εκτελεστεί ταυτόχρονα από ένα βιβλίο εργασίας σε άλλους.

 


Τα καλύτερα εργαλεία παραγωγικότητας του Office

Το Kutools για Excel λύνει τα περισσότερα από τα προβλήματά σας και αυξάνει την παραγωγικότητά σας κατά 80%

  • Επαναχρησιμοποίηση: Εισαγάγετε γρήγορα σύνθετοι τύποι, γραφήματα και οτιδήποτε έχετε χρησιμοποιήσει στο παρελθόν. Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών χωρίς απώλεια δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές / στήλες... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Περισσότερα από 300 ισχυρά χαρακτηριστικά. Υποστηρίζει Office / Excel 2007-2021 και 365. Υποστηρίζει όλες τις γλώσσες. Εύκολη ανάπτυξη στην επιχείρηση ή τον οργανισμό σας. Πλήρεις δυνατότητες δωρεάν δοκιμής 30 ημερών. Εγγύηση επιστροφής χρημάτων 60 ημερών.
kte καρτέλα 201905

Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου

 

Σχόλια (43)
Βαθμολογήθηκε το 4.5 από το 5 · αξιολογήσεις 1
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Πολύ χρήσιμη μακροεντολή, και λειτουργεί καλά, αλλά θα ήθελα να μπορώ να επιλέξω σε ποια αρχεία από αυτόν τον φάκελο θέλω να εκτελείται η μακροεντολή; Τα αρχεία δεν δημιουργούνται αυτόματα σε ξεχωριστό φάκελο και πρέπει να εκτελέσω διαφορετικές μακροεντολές σε κάθε σύνολο αρχείων από αυτόν τον φάκελο και, στη συνέχεια, να τις μετακινήσω πίσω στον αρχικό φάκελο.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Ακολούθησα τις οδηγίες αλλά έλαβα ένα σφάλμα μεταγλώττισης "Loop χωρίς να κάνω". Τι μου λείπει; Ο κώδικας μακροεντολής μου είναι πολύ απλός, απλώς αλλάξτε το μέγεθος γραμματοσειράς των καθορισμένων σειρών. Λειτουργεί από μόνο του. Εδώ είναι αυτό που έχω... παρακαλώ βοηθήστε

Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do while xFileName <> ""
Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)
'Ο κωδικός σου εδώ
Γραμμές ("2:8"). Επιλέξτε
Με Selection.Font
.Όνομα = "Arial"
.Μέγεθος = 12
.Strikethrough = Λάθος
.Υπεργράφημα = Λάθος
.Subscript = Λάθος
.OutlineFont = Λάθος
.Σκιά = Ψεύτικος
.Υπογράμμιση = xlUnderlineStyleΚαμία
.Χρώμα = -11518420
.TintAndShade = 0
.ThemeFont = xlThemeFontΚαμία
Τέλος με
xFileName = Σκην
Βρόχος
End If
Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Γιάρτο,
Χάσατε το σενάριο "Τέλος με" στο τέλος του κώδικά σας, το σωστό θα πρέπει να είναι αυτό:
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do while xFileName <> ""
Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)
'Ο κωδικός σου εδώ
Γραμμές ("2:8"). Επιλέξτε
Με Selection.Font
.Όνομα = "Arial"
.Μέγεθος = 16
.Strikethrough = Λάθος
.Υπεργράφημα = Λάθος
.Subscript = Λάθος
.OutlineFont = Λάθος
.Σκιά = Ψεύτικος
.Υπογράμμιση = xlUnderlineStyleΚαμία
.Χρώμα = -11518420
.TintAndShade = 0
.ThemeFont = xlThemeFontΚαμία
Τέλος με
Τέλος με
xFileName = Σκην
Βρόχος
End If
Sub End

Δοκιμάστε το, ελπίζω να σας βοηθήσει!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Πολύ χρήσιμη μακροεντολή και λειτουργεί εξαιρετικά, αλλά θα ήθελα να μπορώ να επιλέξω σε ποια αρχεία από αυτόν τον φάκελο θέλω να εκτελείται η μακροεντολή; Για παράδειγμα, έχω 4 αρχεία σε έναν φάκελο με άλλα αρχεία excel και θέλω να τρέχει μόνο σε αυτά τα 4 συγκεκριμένα αρχεία. Πώς μπορώ να τροποποιήσω τη μακροεντολή σας για να μου επιτρέψετε να επιλέξω αυτά τα 4 αρχεία από αυτόν τον φάκελο;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, Joel,
Για να ενεργοποιήσετε τον ίδιο κωδικό σε συγκεκριμένα βιβλία εργασίας, θα πρέπει να εφαρμόσετε τον παρακάτω κώδικα:

Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Μείωση xFB ως συμβολοσειρά
Με Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.Φίλτρα.Διαγραφή
.Φίλτρα.Προσθήκη "excel", "*.xls*"
.Προβολή
Εάν .SelectedItems.Count < 1 Τότε βγείτε από το Sub
Για lngCount = 1 To .SelectedItems.Count
xFileName = .SelectedItems(lngCount)
Αν xFileName <> "" Τότε
Με Workbooks.Open(Filename:=xFileName)
'ο κωδικός σου
Τέλος με
End If
Επόμενο lngCount
Τέλος με
Sub End

Δοκιμάστε το, ελπίζω να σας βοηθήσει!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
ευχαριστώ, ήταν πραγματικά χρήσιμη
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας!

Προσπαθώ να εισαγάγω τον κώδικά μου στον δικό σας και όταν εκτελώ τη μακροεντολή, μου βγαίνει το ακόλουθο μήνυμα: Σφάλμα χρόνου εκτέλεσης '429': Το ActiveX δεν μπορεί να δημιουργήσει το αντικείμενο. Παρακαλούμε ενημερώστε σχετικά με το πώς μπορεί να διορθωθεί. Σας ευχαριστώ!

Ο κωδικός μου:

Ρύθμιση RInput = Range ("A2:A21")
Ορισμός ROoutput = Εύρος ("D2:D22")

Dim A() Ως παραλλαγή
ReDim A(1 To RInput.Rows.Count, 0)
A = RIinput.Value2

Σύνολο d = CreateObject ("Scripsting.Dictionary")

Για i = 1 To UBound(A)
Αν δ.Υπάρχει(A(i, 1)) Τότε
d(A(i, 1)) = d(A(i, 1)) + 1
Αλλού
δ.Προσθήκη A(i, 1), 1
End If
Επόμενο
Για i = 1 To UBound(A)
A(i, 1) = d(A(i, 1))
Επόμενο

ROoutput = Α
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, καταρχάς σας ευχαριστώ για αυτήν τη μακροεντολή, ήταν ακριβώς αυτό που έψαχνα. Ωστόσο, έχω ένα πρόβλημα, υπάρχει τρόπος να κλείσω και να αποθηκεύσετε κάθε παράθυρο καθώς ολοκληρώνεται. Έχω μεγάλο αριθμό αρχείων και τελειώνει η RAM πριν ολοκληρωθεί η εκτέλεση.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Ναι, απλώς προσθέστε τον παρακάτω κώδικα εάν θέλετε να αποθηκεύσετε το αρχείο με το ίδιο όνομα:

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

Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Dim xWB ως βιβλίο εργασίας
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
On Error Συνέχιση Επόμενη
Do while xFileName <> ""
Ορισμός xWB = Workbooks.Open(xFdItem & xFileName)
Με xWB
'Ο κωδικός σου εδώ
Τέλος με
xWB.Κλείσιμο
xFileName = Σκην
Βρόχος
End If
Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας!

Προσπαθώ να εισαγάγω τον κώδικά μου στον δικό σας και όταν εκτελώ τη μακροεντολή, μου βγαίνει το ακόλουθο μήνυμα: Σφάλμα χρόνου εκτέλεσης '429': Το ActiveX δεν μπορεί να δημιουργήσει το αντικείμενο. Παρακαλούμε ενημερώστε σχετικά με το πώς μπορεί να διορθωθεί. Σας ευχαριστώ!

Ο κωδικός μου:

Ρύθμιση RInput = Range ("A2:A21")
Ορισμός ROoutput = Εύρος ("D2:D22")

Dim A() Ως παραλλαγή
ReDim A(1 To RInput.Rows.Count, 0)
A = RIinput.Value2

Σύνολο d = CreateObject ("Scripsting.Dictionary")

Για i = 1 To UBound(A)
Αν δ.Υπάρχει(A(i, 1)) Τότε
d(A(i, 1)) = d(A(i, 1)) + 1
Αλλού
δ.Προσθήκη A(i, 1), 1
End If
Επόμενο
Για i = 1 To UBound(A)
A(i, 1) = d(A(i, 1))
Επόμενο

ROoutput = Α
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Χαίρετε Κ.

Έχω χρησιμοποιήσει αυτή τη μακροεντολή με επιτυχία για να μορφοποιήσω αρχεία NBA για τις 30 ομάδες η καθεμία με το δικό της βιβλίο. Χθες, έλαβα ένα μήνυμα σφάλματος ότι η ενότητα (μακροεντολή) δεν μπορεί να συμπληρωθεί ή να διαγραφεί ή να επεξεργαστεί (προς αποθήκευση). Έχει καταστρέψει το προσωπικό μου βιβλίο εργασίας μακροεντολών και έχει καταστήσει το Excel σχεδόν άχρηστο για μένα. Καταργεί την εφαρμογή κάθε φορά που προσπαθώ να αποκτήσω πρόσβαση σε μια μακροεντολή από οποιοδήποτε αρχείο. Η υποστήριξη του Excel και η υποστήριξη των Windows δεν μπόρεσαν να διορθώσουν προβλήματα. Μπορεις να βοηθησεις?
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, Υπάρχει τρόπος να ορίσω τον προορισμό του αρχείου στο ίδιο το σενάριο. Θέλω να παραλείψω τη διαδικασία 3 όπου πρέπει να περιηγηθούμε στον συγκεκριμένο φάκελο.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, ευχαριστώ για αυτόν τον κωδικό. μπορείτε να μου πείτε πώς μπορώ να έχω το αποτέλεσμα της μακροεντολής μου για την οποία άνοιξα όλα τα βιβλία εργασίας σε ένα φύλλο (το αποτέλεσμα κάθε βιβλίου εργασίας στη σειρά); και υπάρχει τρόπος να προσθέσω το όνομα κάθε βιβλίου εργασίας στη σειρά με τα δεδομένα από το προηγούμενο βήμα;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Hi

Έλαβα ένα σφάλμα χρόνου εκτέλεσης 1004: η σύνταξη δεν είναι σωστή όταν έτρεξα τον ακόλουθο κώδικα που είναι το Επέκταση του Office VBA σε "Εκτέλεση μακροεντολής ταυτόχρονα σε πολλά βιβλία εργασίας με κώδικα VBA" με το Extend Office VBA "Διαγραφή όλων των επώνυμων περιοχών με κωδικό VBA" στην εισαγωγή του κωδικού σας:

Sub LoopThroughFiles()

Dim xFd As FileDialog

Dim xFdItem As Variant

Dim xFileName ως συμβολοσειρά

Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)

Αν xFd.Εμφάνιση = -1 Τότε

xFdItem = xFd.SelectedItems(1) & Application.PathSeparator

xFileName = Dir(xFdItem & "*.xls*")

Do while xFileName <> ""

Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)

' Sub DeleteNames()

«Ενημέρωση 20140314

Dim xName As Name

Για κάθε xName In Application.ActiveWorkbook.Names

xName.Διαγραφή

Επόμενο


Τέλος με

xFileName = Σκην

Βρόχος

End If

Sub End

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

BTW, είναι η πρώτη φορά που χρησιμοποίησα κάτι από το Extend Office και δεν λειτουργεί. Αυτός ο ιστότοπος με βοήθησε πολύ.

Προτάσεις/σχόλια θα εκτιμούσαμε ιδιαίτερα.

aldc
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου, aldc,
Ο κώδικάς σας λειτουργεί καλά στο βιβλίο εργασίας μου, ποια έκδοση Excel χρησιμοποιείτε;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας, αυτός ο κωδικός είναι τόσο καλός και χρήσιμος. Το χρησιμοποιώ πολύ!

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

Υπάρχει τρόπος να επιλέξετε απλώς τον κύριο φάκελο, ώστε ο κώδικας να τρέχει σε όλους τους υποφακέλους του;

Σας ευχαριστώ.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, Darko, Για να εκτελέσετε έναν κώδικα από έναν φάκελο με τους υποφακέλους, εφαρμόστε τον ακόλουθο κώδικα: Sub LoopThroughFiles_Subfolders(xStrPath As String)
Dim xSFolderName
Dim xFileName
Dim xArrSFPath() Ως συμβολοσειρά
Dim xI ως ακέραιος αριθμός
Αν xStrPath = "" Τότε βγείτε από το Sub
xFileName = Dir(xStrPath & "*.xls*")
Do while xFileName <> ""
Με Workbooks.Open(xStrPath & xFileName)
'Ο κωδικός σου εδώ
Τέλος με
xFileName = Σκην
Βρόχος
xSFolderName = Dir(xStrPath, vbDirectory)
xI = 0
ReDim xArrSFPath(0)
Do while xSFolderName <> ""
Αν xSFolderName <> "." Και xSFolderName <> ".." Στη συνέχεια
Αν (GetAttr(xStrPath & xSFolderName) Και vbDirectory) = vbDirectory Τότε
xI = xI + 1
ReDim Preserve xArrSFPath(xI)
xArrSFPath(xI - 1) = xStrPath & xSFolderName & "\"
End If
End If
xSFolderName = Διεύθυνση
Βρόχος
Αν UBound(xArrSFPath) > 0 Τότε
Για xI = 0 σε UBound(xArrSFPath)
LoopThroughFiles_Subfolders (xArrSFPath(xI))
Επόμενο xI
End If
Sub End
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
LoopThroughFiles_Subfolders (xFdItem)
End If
Τέλος ΥποΠαρακαλώ δοκιμάστε, ελπίζω να σας βοηθήσει!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Εκτός από τον παραπάνω κώδικα, είναι δυνατό να ανοίξω αρχεία excel με χρονολογική σειρά που ήθελα;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου πρωταγωνιστή, ευχαριστώ πολύ για τη μακροεντολή με την οποία είναι πραγματικά βολικό να δουλέψεις. Απλώς αναρωτιόμουν αν έχουμε τρόπο να ανανεώσουμε τον φάκελο στο onedrive μέσω μακροεντολής. Εάν ναι, μπορείτε να με ενημερώσετε τι μπορώ να κάνω εδώ για να ανανεώσω τα αρχεία στο onedrive χρησιμοποιώντας δέσμη ενεργειών μακροεντολής;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, ευχαριστώ πολύ για αυτό το σενάριο, δουλεύω πολύ καλά για μένα, αλλά έχω ειδικές ανάγκες :Υπάρχει τρόπος να αλλάξω το σενάριο για να εφαρμόσω τον κώδικά μου με συνθήκες ονόματος αρχείου ΚΑΙ σε υποφακέλους;
Εξηγώ : Είμαι δάσκαλος και δημιούργησα μια λύση excel για να αποθηκεύω τα αποτελέσματα των μαθητών και να επιτρέπω στους καθηγητές να τους συμβουλεύονται. Για να το κάνω αυτό, έχω ένα αρχείο ανά σχολικό θέμα και ένα για την υπεύθυνη τάξη, όλα σε έναν φάκελο ανά τάξη.
Έτσι, όταν βρίσκω ένα σφάλμα ή μια βελτιστοποίηση, πρέπει να αναφέρω τις αλλαγές σε όλα τα αρχεία σε όλους τους υποφακέλους.
Όμως, καθώς όλα τα αρχεία δεν είναι ίδια (διαφορετική οργάνωση subjets), θα ήθελα έναν τρόπο να εφαρμόσω τον κωδικό μου ως παράδειγμα σε όλα τα αρχεία που ονομάζονται "μαθηματικά τάξη" σε όλους τους υποφακέλους ή, αντίθετα, να εφαρμόσω τον κώδικά μου σε όλα τα αρχεία σε υποφακέλους εκτός από όλα τα αρχεία με το όνομα "xyz". Ευχαριστώ !Fabrice
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Ο δοσμένος κώδικας σας δεν λειτουργεί με το ακόλουθο VBA, μπορείτε να βοηθήσετε το Sub Bundles()

Dim vWS ως φύλλο εργασίας
Dim vA, vA2()
Dim vR As Long, vSum As Long, vC As Long
Dim vN όσο καιρό, vN2 για όσο χρονικό διάστημα, vN3 as long

Ορισμός vWS = ActiveSheet
Με vWS
vR = .Cells(Rows.Count, 4).End(xlUp).Σειρά
vSum = Application.Sum(.Range("D2:D" & vR))
ReDim Preserve vA2 (1 έως vSum, 1 έως 4)
vA = .Range("A2:D" & vR)
Για vN = 1 έως vR - 1
Για vN2 = 1 έως vA(vN, 4)
vC = vC + 1
Για vN3 = 1 έως 4
vA2(vC, vN3) = vA(vN, vN3)
Επόμενο vN3
Επόμενο vN2
Επόμενο vN
Τέλος με
vC = 1
Για vN = 1 έως vSum - 2
vA2(vN, 4) = vC
Αν vA2(vN + 1, 2) = vA2(vN, 2) Τότε
vC = vC + 1
vA2(vN + 1, 4) = vC
Αλλού
vA2(vN + 1, 4) = 1
vC = 1
End If
Επόμενο vN
Application.ScreenUpdating = False
Φύλλα.Προσθήκη
Με το ActiveSheet
vWS.Range("A1:D1").Αντιγραφή .Range("A1:D1")
.Cells(2, 1).Αλλαγή μεγέθους(vSum, 4) = vA2
Τέλος με
Application.ScreenUpdating = True

Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Θέλω να εκτελέσω αυτό το VBA σε πολλά φύλλα σε έναν φάκελο κάθε φορά, μπορείτε να βοηθήσετε τα Sub Bundles()

Dim vWS ως φύλλο εργασίας
Dim vA, vA2()
Dim vR As Long, vSum As Long, vC As Long
Dim vN όσο καιρό, vN2 για όσο χρονικό διάστημα, vN3 as long

Ορισμός vWS = ActiveSheet
Με vWS
vR = .Cells(Rows.Count, 4).End(xlUp).Σειρά
vSum = Application.Sum(.Range("D2:D" & vR))
ReDim Preserve vA2 (1 έως vSum, 1 έως 4)
vA = .Range("A2:D" & vR)
Για vN = 1 έως vR - 1
Για vN2 = 1 έως vA(vN, 4)
vC = vC + 1
Για vN3 = 1 έως 4
vA2(vC, vN3) = vA(vN, vN3)
Επόμενο vN3
Επόμενο vN2
Επόμενο vN
Τέλος με
vC = 1
Για vN = 1 έως vSum - 2
vA2(vN, 4) = vC
Αν vA2(vN + 1, 2) = vA2(vN, 2) Τότε
vC = vC + 1
vA2(vN + 1, 4) = vC
Αλλού
vA2(vN + 1, 4) = 1
vC = 1
End If
Επόμενο vN
Application.ScreenUpdating = False
Φύλλα.Προσθήκη
Με το ActiveSheet
vWS.Range("A1:D1").Αντιγραφή .Range("A1:D1")
.Cells(2, 1).Αλλαγή μεγέθους(vSum, 4) = vA2
Τέλος με
Application.ScreenUpdating = True

Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Προσπάθησα να εκτελέσω τον κώδικα αλλά το σφάλμα "424 : Απαιτείται αντικείμενο" εμφανίζεται στη γραμμή "With Workbooks.Open(xFdItem & xFileName)". Κοιτάζοντας βαθύτερα, φαίνεται ότι τα βιβλία εργασίας excels που είναι αποθηκευμένα στον φάκελο ενδιαφέροντος δεν εμφανίζονται/υπάρχουν (Όταν το παράθυρο άνοιξε με την εμφάνιση κώδικα, αν προσπαθήσω να ανοίξω τον φάκελο και όχι να τον επιλέξω, είναι κενό). Πως και έτσι?
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do while xFileName <> ""
Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)
Sheets.Add After:=ActiveSheet
Φύλλα ("Φύλλο2"). Επιλέξτε
Φύλλα ("Φύλλο 2"). Όνομα = "Κύριος"
Φύλλα ("Master"). Επιλέξτε
Φύλλα ("Master").Μετακίνηση πριν:=Φύλλα(1)
Τέλος με
xFileName = Σκην
Βρόχος
End If
Sub End


Μπορείτε να με βοηθήσετε να λύσω αυτό το πρόβλημα;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αυτός είναι ο αγαπημένος μου ιστότοπος με τις απόλυτα σαφείς οδηγίες (περισσότερο από οποιοδήποτε βίντεο YouTube) και επιστρέφω σε αυτόν ξανά και ξανά. Σας ευχαριστούμε πολύ για αυτά τα σεμινάρια - είστε ο λυπημένος φοιτητής.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do while xFileName <> ""
Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)
' ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
Επιλογή.Εισαγωγή Shift:=xlToRight
ActiveCell.Επιλέξτε
Τέλος με
xFileName = Σκην
Βρόχος
End If
End Sub, παρακαλώ βοηθήστε. BTW, η επέκταση αρχείων excel μου είναι (.csv - "οριοθετημένο με κόμμα") . και έχω 500 αρχεία excel σε έναν φάκελο με μέσο όρο κάθε σειράς περίπου 500000 σειρές.. Βοηθήστε. Θέλω απλώς να εισάγω στήλη σε κάθε βιβλίο εργασίας
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
πήρες ποτέ απάντηση στην ερώτησή σου; Προσπαθώ να κάνω το ίδιο πράγμα σε περισσότερα από 3700 αρχεία csv. Απλά πρέπει να προσθέσω 1 στήλη (Α).
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, άπορη και Carly, Για να λύσετε το πρόβλημά σας, για να εκτελέσετε τον κώδικα για πολλά αρχεία CSV, πρέπει απλώς να αλλάξετε την επέκταση αρχείου .xls σε .csv όπως φαίνεται στον παρακάτω κώδικα: Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName ως συμβολοσειρά
Ορισμός xFd = Application.FileDialog(msoFileDialogFolderPicker)
Αν xFd.Εμφάνιση = -1 Τότε
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.csv*")
Do while xFileName <> ""
Με βιβλία εργασίας. Ανοιχτό (xFdItem & xFileName)
ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
Επιλογή.Εισαγωγή Shift:=xlToRight
ActiveCell.Επιλέξτε
Τέλος με
xFileName = Σκην
Βρόχος
End If
Τέλος ΥποΠαρακαλώ δοκιμάστε, ελπίζω να σας βοηθήσει!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, είναι δυνατή η εκτέλεση της μακροεντολής μόνο στα φύλλα διαφορετικών βιβλίων εργασίας με συγκεκριμένο όνομα; Ευχαριστώ!!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Σάρα,
Λυπούμαστε, δεν υπάρχει καλή λύση στο πρόβλημα που θίξατε.
Ευχαριστώ!
Δεν υπάρχουν σχόλια δημοσιεύτηκε ακόμα
Τοποθετήστε Περισσότερα
Αφήστε τα σχόλιά σας
Δημοσίευση ως επισκέπτης
×
Αξιολογήστε αυτήν την ανάρτηση:
0   Χαρακτήρες
Προτεινόμενες τοποθεσίες

Ακολουθησε μας

Πνευματικά δικαιώματα © 2009 - www.extendoffice.com. | Ολα τα δικαιώματα διατηρούνται. Τροφοδοτείται από ExtendOffice. | Sitemap
Το Microsoft και το λογότυπο του Office είναι εμπορικά σήματα ή σήματα κατατεθέντα της Microsoft Corporation στις Ηνωμένες Πολιτείες ή / και σε άλλες χώρες.
Προστατεύεται από το Sectigo SSL