VBA Shell

Αυτό το σεμινάριο θα δείξει πώς να χρησιμοποιήσετε τη λειτουργία VBA Shell.

Μπορούμε να χρησιμοποιήσουμε το VBA Κέλυφος λειτουργία για να καλέσετε ένα ξεχωριστό, εκτελέσιμο πρόγραμμα μέσα από ένα πρόγραμμα VBA. Για παράδειγμα, εάν χρειαστεί να ανοίξουμε το Σημειωματάριο από το Excel, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση VBA Shell για να το κάνουμε αυτό. Εάν η κλήση Shell επιτύχει, επιστρέφει την τιμή Windows TaskID του προγράμματος που κάλεσε. Εάν η κλήση Shell αποτύχει, επιστρέφει μηδέν.

Κέλυφος έχει δύο παραμέτρους εισόδου: απαιτείται όνομα διαδρομής για κλήση του προγράμματος και προαιρετικό παράθυρο τιμή που ελέγχει το στυλ του παραθύρου όπου θα εκτελεστεί το πρόγραμμα. ο όνομα διαδρομής η τιμή μπορεί να περιλαμβάνει τη διαδρομή / κατάλογο προγράμματος και ορίσματα.

Καλέστε τη Shell

Αυτός ο κώδικας μπορεί να αποτελέσει μέρος μιας μακροεντολής για εκτέλεση Μπλοκ ΣΗΜΕΙΩΣΕΩΝ με τη χρήση του Κλήση VBA εντολή να καλέσετε το Κέλυφος λειτουργία.

1 Call Shell ("σημειωματάριο", vbNormalFocus)

Για παράδειγμα:

Shell Wait

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

12 Application.Wait (Now + TimeValue ("00:00:05"))Call Shell ("σημειωματάριο", vbNormalFocus)

Επομένως, θα περάσουν 5 δευτερόλεπτα πριν κληθεί η εντολή Shell.

Επιστροφή σφάλματος από τη λειτουργία Shell

Εάν έχουμε σφάλμα στον κωδικό μας όταν καλούμε το Κέλυφος λειτουργία, και το σφάλμα θα επιστρέψει και ο κωδικός μας θα μεταβεί σε λειτουργία εντοπισμού σφαλμάτων.

Για παράδειγμα, σε αυτήν τη μακροεντολή, έχουμε γράψει λανθασμένα το "σημειωματάριο".

1 Call Shell ("σημειωματάριο", vbNormalFocus)

Το αποτέλεσμα της εκτέλεσης αυτής της μακροεντολής θα είναι:

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Ανοίξτε ένα υπάρχον αρχείο με το κέλυφος

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

1 Call Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

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

Παράμετροι που χρησιμοποιούνται από τη συνάρτηση Shell

ο Κέλυφος η συνάρτηση έχει 2 παραμέτρους - το όνομα του προγράμματος για κλήση και το στυλ των παραθύρων που πρόκειται να χρησιμοποιήσει το πρόγραμμα. Έχουμε χρησιμοποιήσει το vbNormalFocus στα παραπάνω παραδείγματα που σημαίνει ότι όταν ανοίγει το πρόγραμμα (στην περίπτωση αυτή το Σημειωματάριο), έχει την εστίαση και ανοίγει στην προεπιλεγμένη θέση και μέγεθος στον υπολογιστή.

ο Κέλυφος προσφέρει πέντε άλλες επιλογές:

vbΑπόκρυψη Κρύβει το παράθυρο και ορίζει την εστίαση σε αυτό το παράθυρο

vbMinimizedFocus Εμφανίζει το παράθυρο ως εικονίδιο με εστίαση

vbMaximizedFocus Ανοίγει το πρόγραμμα σε ένα μέγιστο παράθυρο με εστίαση

vbNormalNoFocus Επαναφέρει το παράθυρο στην πιο πρόσφατη θέση και μέγεθος

vbMinimizedNoFocus Εμφανίζει το παράθυρο ως εικονίδιο και το τρέχον ενεργό παράθυρο παραμένει ενεργό

Επιστροφή αναγνωριστικού διεργασίας από την εντολή Shell

Όταν τρέχουμε το Κέλυφος Εντολή, επιστρέφει ένα Process ή Task ID. Μπορούμε να αποθηκεύσουμε το αναγνωριστικό διεργασίας σε μια μεταβλητή και να χρησιμοποιήσουμε αυτό το αναγνωριστικό διεργασίας για την εκτέλεση μιας άλλης εντολής - για παράδειγμα, το TaskKill εντολή για κλείσιμο του αρχείου Σημειωματάριο.

123456 Sub TestPIDDim ProcessID ως ακέραιοςprocessID = Shell ("σημειωματάριο", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))Τέλος υπο

Στην πρώτη γραμμή, ανοίγει το NotePad και στο αναγνωριστικό διεργασίας εκχωρείται μια τιμή από τα Windows. Αποθηκεύουμε αυτήν την τιμή στη μεταβλητή ProcessID. Στη συνέχεια, χρησιμοποιούμε το TaskKill για να αναγκάσουμε το Σημειωματάριο να κλείσει την παρουσίαση του NotePad που μόλις ανοίξαμε. ο /ΦΑ εναλλαγή δυνάμεων Μπλοκ ΣΗΜΕΙΩΣΕΩΝ να τελειώσει, και το /PID λέει ο διακόπτης TaskKill για να αναζητήσετε το Σημειωματάριο Αναγνωριστικό διεργασίας αξία. Η συνάρτηση CStr μετατρέπει το ProcessID στη μορφή συμβολοσειράς που χρειάζονται τα Shell και MsgBox στην επόμενη γραμμή.

Κουραστήκατε να ψάχνετε για παραδείγματα κώδικα VBA; Δοκιμάστε το AutoMacro!

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Κλήση άλλων προγραμμάτων με το Shell

Η Shell θα ανοίξει οποιοδήποτε άλλο πρόγραμμα Windows. Για παράδειγμα, αυτός ο κώδικας καλεί Προέχω, και ανοίγει το αρχείο Excel «example_workbook.xlsx»:

1 Call Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Αυτό δείχνει το αρχείο που έχει ανοίξει:

ShellExecute και ShellExecuteEx έναντι της εντολής Shell

Ο χώρος προγραμματισμού των Windows προσφέρει ShellExecute και ShellExecuteEx λειτουργίες που καλούν εξωτερικά προγράμματα από κώδικα λογισμικού. Σε σύγκριση με τη λειτουργία VBA Shell, αυτές οι λειτουργίες των Windows προσφέρουν μεγαλύτερη ευελιξία, αλλά η VBA δεν τις υποστηρίζει και επομένως αυτό το άρθρο δεν τις καλύπτει.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave