Αυτό το άρθρο θα δείξει πώς να χρησιμοποιήσετε το VBA για να αντιγράψετε στοιχεία στο Πρόχειρο.
Μπορεί να υπάρξει κάποια στιγμή που επιθυμούμε να αντιγράψουμε πληροφορίες στο Excel VBA και να τις αποθηκεύσουμε για χρήση σε άλλη εφαρμογή ή σε άλλη στιγμή που η μακροεντολή του Excel έχει σταματήσει να εκτελείται. Μόλις μια μακροεντολή σταματήσει να λειτουργεί, οι πληροφορίες που είναι αποθηκευμένες σε μια μεταβλητή ή μεταβλητές σταματούν να υπάρχουν και δεν μπορούν πλέον να ανακτηθούν. Ένας τρόπος επίλυσης αυτού του προβλήματος θα ήταν η αντιγραφή αυτών των πληροφοριών στο πρόχειρο.
Αντιγραφή στο Πρόχειρο χρησιμοποιώντας τη βιβλιοθήκη αντικειμένων HTML
Ο απλούστερος τρόπος για να χρησιμοποιήσετε το πρόχειρο στο Excel VBA είναι να καλέσετε τη βιβλιοθήκη αντικειμένων HTML.
1234567 | Sub StoreData ()Dim varText As VariantDim objCP Ως αντικείμενοvarText = "Κάποιο αντιγραμμένο κείμενο"Ορισμός objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextΤέλος υπο |
Δεδομένου ότι χρησιμοποιούμε καθυστερημένη δέσμευση δηλώνοντας τη μεταβλητή objCP ως αντικείμενο, δεν χρειάζεται να προσθέσουμε μια αναφορά στο Excel για να λειτουργήσει αυτή η διαδικασία.
Εάν τώρα έπρεπε να μεταβούμε στο φύλλο εργασίας του Excel και να κάνουμε κλικ στην Επικόλληση, το κείμενο "Ορισμένα αντιγραμμένα δεδομένα" θα εισαχθεί στο επιλεγμένο κελί.
Εάν αλλάζαμε αυτήν τη διαδικασία παραπάνω σε συνάρτηση, θα μπορούσαμε να περάσουμε το κείμενο προς αντιγραφή ως μεταβλητή.
12345 | Λειτουργία StoreData (varText As Variant) ως συμβολοσειράDim objCP Ως αντικείμενοΟρισμός objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextΛειτουργία Τέλους |
Στη συνέχεια, θα μπορούσαμε να καλέσουμε αυτήν τη λειτουργία πολλές φορές στον κώδικα VBA, καθώς και όταν χρειαστεί να αντιγράψουμε κείμενο στο πρόχειρο. Συνεπώς, το κείμενο δεν θα είναι σκληρά κωδικοποιημένο στον κώδικα VBA.
123 | Υπο CopyData ()StoreData "Κάποιο αντιγραμμένο κείμενο"Τέλος υπο |
Μπορούμε επίσης να χρησιμοποιήσουμε το αντικείμενο HTML για να επιστρέψουμε το κείμενο από το πρόχειρο - δηλαδή Επικόλληση. Για αυτό χρησιμοποιούμε το GetData και όχι τη μέθοδο SetData.
12345 | Συνάρτηση ReturnData ()Dim objCP Ως αντικείμενοΟρισμός objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("κείμενο")Λειτουργία Τέλους |
Στη συνέχεια, μπορούμε να καλέσουμε αυτήν τη συνάρτηση για να επιστρέψουμε τα δεδομένα που είναι αποθηκευμένα στο πρόχειρο.
123 | Sub PasteData ()MsgBox ReturnDataΤέλος υπο |
Ένα τακτοποιημένο κόλπο θα ήταν ο συνδυασμός των 2 συναρτήσεων, ώστε να μπορούμε να χρησιμοποιούμε την ίδια λειτουργία για την αντιγραφή και την επικόλληση δεδομένων, ανάλογα με το αν στέλνουμε ή όχι δεδομένα στο πρόχειρο ή αν θέλουμε να ανακτήσουμε δεδομένα από το πρόχειρο.
1234567891011 | Λειτουργία StoreOrReturnData (Προαιρετικό strText As String) Ως συμβολοσειράDim varText As VariantDim objCP Ως αντικείμενοΟρισμός objCP = CreateObject ("HtmlFile")varText = strTextΕάν strText "" ΤότεobjCP.ParentWindow.ClipboardData.SetData "text", varTextΑλλούStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("κείμενο")Τέλος εανΛειτουργία Τέλους |
Στον παραπάνω κώδικα, μπορούμε να κάνουμε τη μεταβλητή strText προαιρετική - αυτό σημαίνει ότι αν θέλουμε να αντιγράψουμε δεδομένα, θα συμπεριλάβουμε το κείμενο που πρόκειται να αντιγραφεί, αλλά αν θέλουμε να επικολλήσουμε δεδομένα, θα το αποκλείσουμε.
Στη συνέχεια, θα εκχωρήσουμε τη μεταβλητή συμβολοσειράς (strText) σε μια μεταβλητή παραλλαγής, προκειμένου να αποθηκευτεί στη μέθοδο SetData του αντικειμένου αρχείου HTML.
Για να αντιγράψουμε τα δεδομένα, μπορούμε να χρησιμοποιήσουμε αυτήν τη διαδικασία, σημειώστε ότι συμπεριλαμβάνουμε το κείμενο που πρόκειται να αντιγραφεί.
123 | Υπο CopyData ()StoreOrReturnData "SomeCopiedText"Τέλος υπο |
Για να επικολλήσετε τα δεδομένα, μπορούμε να χρησιμοποιήσουμε αυτήν τη διαδικασία. Το πλαίσιο μηνυμάτων θα εμφανίσει την τιμή που είναι αποθηκευμένη στο πρόχειρο.
123 | Sub PasteData ()MsgBox StoreOrReturnDataΤέλος υπο |