Excel VBA FileDialog
Στο VBA fieldialog είναι μια ιδιότητα που χρησιμοποιείται για την αναπαράσταση διαφορετικών περιπτώσεων, στο filialog υπάρχουν τέσσερις διαφορετικοί τύποι σταθερών που είναι γνωστοί ως msofiledialogfilepicker που χρησιμοποιείται για την επιλογή ενός αρχείου από μια δεδομένη διαδρομή, το δεύτερο είναι το msofiledialogfolderpicker ένα φάκελο και το τρίτο είναι msofiledialog ανοιχτό για να ανοίξει ένα αρχείο και το τελευταίο είναι msofiledialogsaveas που χρησιμοποιείται για την αποθήκευση ενός αρχείου ως νέο αρχείο.
Υπάρχουν συγκεκριμένες περιστάσεις όπου θέλουμε τα δεδομένα από οποιοδήποτε άλλο αρχείο ή οποιοδήποτε άλλο φύλλο εργασίας, και καθώς το VBA χρησιμοποιείται για την αυτοματοποίηση της εργασίας μας, μπορούμε να ανοίξουμε διαφορετικά άλλα αρχεία χρησιμοποιώντας το VBA και αυτό γίνεται χρησιμοποιώντας το παράθυρο διαλόγου Αρχείο, το δροσερό μέρος Η χρήση αυτής της μεθόδου είναι ότι δεν χρειάζεται να παρέχουμε τη διαδρομή στον κώδικα, αλλά ζητάμε από τον χρήστη να περιηγηθεί στο αρχείο.
Ως μέρος του έργου VBA, ίσως χρειαστεί να ανοίξουμε άλλα βιβλία εργασίας και να εκτελέσουμε κάποια εργασία μαζί τους. Σε ένα από τα προηγούμενα άρθρα, "VBA Workbook.Open", έχουμε δείξει πώς να ανοίγουμε αρχεία με συγκεκριμένη διαδρομή και συγκεκριμένο αρχείο. Εκεί, χρειαζόμασταν να παρέχουμε τη διαδρομή του φακέλου και το όνομα του αρχείου με την επέκτασή του. Τι γίνεται όμως κάθε φορά που ένας χρήστης πρέπει να επιλέγει τα διαφορετικά αρχεία από τους διαφορετικούς φακέλους Εδώ εμφανίζεται η επιλογή "FileDialog".

Πώς λειτουργεί το VBA FileDialog Option;
"Εάν δεν γνωρίζετε την ακριβή διαδρομή, το FileDialog θα σας βρει και θα επιλέξει το αρχείο." Αντί να αναφέρουμε τη διεύθυνση διαδρομής και το όνομα αρχείου, μπορούμε να παρουσιάσουμε ένα παράθυρο διαλόγου ανοιχτού αρχείου ξεχωριστά για να επιλέξουμε το αρχείο από οποιονδήποτε φάκελο του υπολογιστή.
Το "FileDialog" είναι ένα αντικείμενο στο VBA. Για να χρησιμοποιήσουμε πρώτα αυτήν την επιλογή, πρέπει να ορίσουμε τη μεταβλητή ως FileDialog.

Μόλις η μεταβλητή δηλωθεί ως "FileDialog", είναι μια μεταβλητή αντικειμένου. Για να ξεκινήσετε να το χρησιμοποιείτε, πρέπει να ορίσετε το αντικείμενο χρησιμοποιώντας το Application.FileDialog.

Όπως μπορούμε να δούμε στην παραπάνω εικόνα, το FileDialog έχει τέσσερις επιλογές μαζί του.
- msoFileDialogFilePicker: Αυτή η επιλογή ανοίγει το παράθυρο επιλογής αρχείων μπροστά από το χρήστη για να επιλέξει το επιθυμητό αρχείο σύμφωνα με την επιθυμία του.
- msoFileDialogFolderPicker: Αυτή η επιλογή ανοίγει το πλαίσιο διαλόγου ή το παράθυρο μπροστά από τον χρήστη για να επιλέξετε το φάκελο.
- msoFileDialogOpen: Αυτό θα επιτρέψει στο χρήστη να ανοίξει το επιλεγμένο αρχείο από το φάκελο.
- msoFileDialogSaveAs: Αυτό θα επιτρέψει στον χρήστη να αποθηκεύσει το αρχείο ως διαφορετικό αντίγραφο.
Από τώρα, έχω επιλέξει την επιλογή msoFileDialogFilePicker.
Τώρα πρέπει να σχεδιάσουμε το παράθυρο διαλόγου που εμφανίζεται μπροστά μας.
Χρησιμοποιώντας τη δήλωση, μπορούμε να σχεδιάσουμε το πλαίσιο διαλόγου.

Στο εσωτερικό με τη δήλωση, βάλτε μια κουκκίδα για να δείτε τη λίστα IntelliSense των ιδιοτήτων και των μεθόδων της επιλογής FileDialog.

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

Τώρα πρέπει να εφαρμόσουμε ένα νέο φίλτρο ως "Excel Files" με επέκταση μπαλαντέρ των αρχείων excel.

Τώρα ας αλλάξουμε τον τίτλο του διαλόγου αρχείου.

Μπορούμε να επιτρέψουμε στον χρήστη να επιλέξει μόνο ένα αρχείο τη φορά ή μπορούμε επίσης να του επιτρέψουμε να επιλέξουν πολλά αρχεία. Για αυτό, πρέπει να χρησιμοποιήσουμε το "Allow Multi-Select".

Έχουμε δύο επιλογές εδώ. Εάν επιλεγεί TRUE, θα επιτρέψει στον χρήστη να επιλέξει πολλά αρχεία. Εάν είναι, ο χρήστης FALSE μπορεί να επιλέξει μόνο ένα αρχείο κάθε φορά.
Ένα άλλο πράγμα που μπορούμε να σχεδιάσουμε με το FileDialog είναι ότι μπορούμε πραγματικά να επιμείνουμε σε ποιο θα πρέπει να είναι ο προεπιλεγμένος φάκελος όταν εμφανιστεί το παράθυρο διαλόγου αρχείου. Για αυτήν τη χρήση, αρχικό όνομα αρχείου.

Για αυτό, πρέπει να αναφέρουμε τον προεπιλεγμένο φάκελο για να ανοίξει η διαδρομή διεύθυνσης.

Τώρα τέλος, πρέπει να εφαρμόσουμε τη μέθοδο "Εμφάνιση" για να δούμε το παράθυρο διαλόγου του αρχείου.
Κώδικας:
Sub DoEvents_Example1 () Dim Myfile As FileDialog Set Myfile = Application.FileDialog (msoFileDialogFilePicker) With Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Επιλέξτε το αρχείο Excel !! ! " .AllowMultiSelect = False .InitialFileName = "D: Excel Files". Show End with End Sub

Τώρα εκτελέστε τον κωδικό VBA για να δείτε το αποτέλεσμα.

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

Κοιτάξτε την παραπάνω εικόνα επειδή έχουμε εφαρμόσει την παράμετρο φίλτρου ως "Excel Files" μόνο.
Αυτό θα επιλέξει απλώς το αρχείο από τον αναφερόμενο φάκελο. Για να αποθηκεύσουμε την πλήρη διαδρομή, πρέπει να δηλώσουμε μια ακόμη μεταβλητή ως συμβολοσειρά.

Now inside the with the statement, select “SelectedItems.” Assign the selected items folder path to the newly defined variable.

Now finally show the selected folder path in the VBA message box.

Now I will run the program to see the dialogue box.

Now I have selected the File Name as “1. Charts.xlsx” in the subfolder “Charts.” If I click on OK, we can see the full folder path in the message box.

So, like this, we can use the FileDialog option to select the files from the folder in Excel. Use the below code to select the files.
Code:
Sub DoEvents_Example1 () Dim Myfile As FileDialog Set Myfile = Application.FileDialog (msoFileDialogFilePicker) Dim FileAddress as String With Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Επιλογή. Αρχείο Excel !!! " .AllowMultiSelect = False .InitialFileName = "D: Excel Files". Show FileAddress = .SelectedItems (1) End with MsgBox FileAddress End Sub