Αυτοματοποίηση του Office με χρήση της Visual C++


Σύνοψη


Αυτό το άρθρο απαντά σε συνήθεις ερωτήσεις σχετικά με την αυτοματοποίηση στο Microsoft Office από το Visual C++.

Περισσότερες πληροφορίες


Πίνακας περιεχομένων

  1. Τι είναι η αυτοματοποίηση;
  2. Είμαι νέος στην αυτοματοποίηση, πού μπορώ να βρω καλούς πόρους για να μάθω περισσότερα;
  3. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορώ να χρησιμοποιήσω την αυτοματοποίηση;
  4. Τι είναι το COM;
  5. Πώς μπορώ να επικολλήσω στην παρουσία που εκτελείται σε μια εφαρμογή του Office;
  6. Πώς μπορώ να μεταφέρω τις προαιρετικές παραμέτρους;
  7. Πώς μπορώ να προλάβω τα συμβάντα που εκτίθενται από τις εφαρμογές του Office;
  8. Ο κωδικός αυτοματοποίησης είναι πολύ αργός. Πώς μπορώ να επιταχύνω την κατάσταση;
  9. Τι σημαίνουν αυτές οι τεράστιες τιμές σφάλματος, όπως-2147352573 ή 0x80030002;
  10. Τι είναι μια βιβλιοθήκη τύπων;
  11. Ο κωδικός αυτοματοποίησης λειτούργησε με το Microsoft Excel 95, αλλά αποτυγχάνει με το Microsoft Excel 97. Γιατί?
  12. Γιατί η εφαρμογή αυτοματοποίησης παραμένει στη μνήμη μετά την ολοκλήρωση του προγράμματος;
  13. Γνωρίζω τι θέλω να κάνω ως χρήστης της εφαρμογής Microsoft Office, αλλά πώς μπορώ να το κάνω μέσω προγραμματισμού χρησιμοποιώντας την αυτοματοποίηση;
  14. Μπορώ να αυτοματοποιήσω μια ενσωματωμένη εφαρμογή του Microsoft Office;
  15. Πώς μπορώ να αποκτήσω πρόσβαση στις ιδιότητες του εγγράφου μου σε ένα έγγραφο του Microsoft Office;

Ερωτήσεις και απαντήσεις

  1. Τι είναι η αυτοματοποίηση; Η αυτοματοποίηση (παλαιότερα αυτοματοποίηση OLE) είναι μια τεχνολογία που σας επιτρέπει να εκμεταλλευτείτε τις λειτουργίες ενός υπάρχοντος προγράμματος και να τις ενσωματώσετε στις δικές σας εφαρμογές. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε τις δυνατότητες ορθογραφικού και γραμματικού ελέγχου του Microsoft Word στην εφαρμογή σας χωρίς να είναι ορατή στους χρήστες σας το Microsoft Word. Μπορείτε ακόμη να χρησιμοποιήσετε όλα τα εργαλεία γραφημάτων, εκτύπωσης και ανάλυσης δεδομένων του Microsoft Excel. Αυτή η τεχνολογία μπορεί να απλοποιήσει και να επιταχύνει σημαντικά την ανάπτυξή σας.
  2. Είμαι νέος στην αυτοματοποίηση, πού μπορώ να βρω καλούς πόρους για να μάθω περισσότερα; Το κεφάλαιο 24 της φράσης "μέσα Visual C++" του David Kruglinski (ISBN: 1-57231-565-2) παρέχει μια γενική επισκόπηση καθώς και μερικά εξαιρετικά παραδείγματα. Επίσης, η Γνωσιακή βάση της Microsoft είναι μια καλή πηγή πληροφοριών. Αυτό το άρθρο είναι ένα καλό ξεκίνημα και μπορείτε να εντοπίσετε πιο συγκεκριμένες αναφορές στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:
    152023 Εντοπισμός πόρων για τη μελέτη αυτοματισμού OLE
    Εάν προτιμάτε να μαθαίνετε με βάση το παράδειγμα, ανατρέξτε στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:
    179706 ΔΙΑΔΙΚΑΣΙΕΣ ΧΡΗΣΗΣ MFC για την αυτοματοποίηση του Excel & δημιουργία/μορφοποίηση νέου βιβλίου εργασίας
  3. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορώ να χρησιμοποιήσω την αυτοματοποίηση; Υπάρχουν τρεις βασικοί τρόποι με τους οποίους μπορείτε να χρησιμοποιήσετε την αυτοματοποίηση: MFC, #import και C/C++:
    • Με την MFC, χρησιμοποιήστε το Visual C++ ClassWizard για να δημιουργήσετε "κλάσεις εξομοίωσης" από τις βιβλιοθήκες τύπου του Microsoft Office. Αυτές οι κλάσεις, καθώς και άλλες κλάσεις MFC, όπως το COleVariant, το COleSafeArray, το COleException, απλοποιούν τις εργασίες αυτοματοποίησης. Αυτή η μέθοδος συνήθως συνιστάται έναντι των άλλων και τα περισσότερα παραδείγματα της Γνωσιακής Βάσης της Microsoft χρησιμοποιούν MFC.
    • #import, μια νέα οδηγία που έγινε διαθέσιμη με το Visual C++ 5,0, δημιουργεί το VC + + "Smart Pointers" από μια συγκεκριμένη βιβλιοθήκη τύπων. Είναι πολύ ισχυρό, αλλά συχνά δεν συνιστάται εξαιτίας των προβλημάτων κατά την καταμέτρηση αναφοράς, τα οποία συνήθως προκύπτουν όταν χρησιμοποιούνται με τις εφαρμογές του Microsoft Office.
    • Η αυτοματοποίηση C/C++ είναι πολύ πιο δύσκολη, αλλά μερικές φορές είναι απαραίτητο για να αποφύγετε την επιβάρυνση με MFC ή προβλήματα με το #import. Βασικά, εργάζεστε με τέτοια API ως CoCreateInstance () και διασυνδέσεις COM, όπως το IDispatch και το IUnknown.
    Είναι σημαντικό να σημειωθεί ότι υπάρχουν κάποιες μικρές διαφορές μεταξύ της αυτοματοποίησης από τη C++ σε σύγκριση με το Plain C, επειδή το COM έχει σχεδιαστεί γύρω από την κλάση C++. Για περισσότερες πληροφορίες, ανατρέξτε στο ακόλουθο άρθρο στη Γνωσιακή βάση της Microsoft για ένα παράδειγμα C:
    181473 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση αυτοματισμού OLE από μια εφαρμογή C
  4. Τι είναι το COM; Η αυτοματοποίηση βασίζεται στο μοντέλο αντικειμένου Component (COM). Το COM είναι μια τυπική αρχιτεκτονική λογισμικού που βασίζεται σε διασυνδέσεις και έχει σχεδιαστεί ώστε ο κώδικας να διαχωρίζεται σε αυτόνομα αντικείμενα. Σκεφτείτε το ως επέκταση του μοντέλου Αντικειμενοστραφής Προγραμματισμός (ΟΥΠς), αλλά εφαρμόσιμο σε ξεχωριστές εφαρμογές. Κάθε αντικείμενο εκθέτει ένα σύνολο διασυνδέσεων και κάθε επικοινωνία σε ένα αντικείμενο, όπως η προετοιμασία, οι ειδοποιήσεις και η μεταφορά δεδομένων, πραγματοποιείται μέσω αυτών των διασυνδέσεων. Το COM είναι επίσης ένα μέρος των υπηρεσιών που παρέχονται από βιβλιοθήκες δυναμικής σύνδεσης (DLL) που εγκαθίστανται με το λειτουργικό σύστημα. Η αυτοματοποίηση χρησιμοποιεί πολλές από αυτές τις υπηρεσίες. Ένα παράδειγμα είναι η υπηρεσία "τακτοποίηση", η οποία συσκευάζει τις κλήσεις της εφαρμογής-πελάτη στις λειτουργίες μέλους των διασυνδέσεων της εφαρμογής διακομιστή και μεταβιβάζει αυτές, με τα ορίσματά τους, στην εφαρμογή διακομιστή. Φαίνεται ότι οι διασυνδέσεις του διακομιστή εκτίθενται στον χώρο μνήμης του υπολογιστή-πελάτη, κάτι που δεν συμβαίνει όταν το πρόγραμμα-πελάτης είναι ένα. exe που εκτελείται στον δικό του χώρο διεργασίας. Η δυνατότητα "παράταξη" λαμβάνει επίσης τις τιμές επιστροφής από τις μεθόδους του διακομιστή πίσω στα όρια της διεργασίας και με ασφάλεια στα χέρια της πρόσκλησης του προγράμματος-πελάτη. Υπάρχουν πολλές άλλες υπηρεσίες που είναι απαραίτητες για την αυτοματοποίηση που παρέχονται από τις διάφορες βιβλιοθήκες COM. Οι πηγές πληροφοριών για εκείνους περιλαμβάνουν "μέσα OLE-δεύτερη έκδοση" από Kraig Brockschmidt, ISBN 1-55615-843-2, "εσωτερικός COM" από την κοιλάδα Ρότζερσον-ISBN 1-57231-349-8, και "αναφορά προγραμματιστή αυτοματοποίησης," ISBN 1-57231-584-9.
  5. Πώς μπορώ να επικολλήσω στην παρουσία που εκτελείται σε μια εφαρμογή του Office; Χρησιμοποιήστε το API του GetActiveObject (). Οι διακομιστές αυτοματοποίησης κατατάσσονται στον πίνακα αποσύνθεσης (αντικείμενο τρεξίματος), μέσω του API RegisterActiveObject (). Οι υπολογιστές-πελάτες αυτοματισμού μπορούν να έχουν την εμφάνιση που εκτελείται με κώδικα όπως:
          // Translate server ProgID into a CLSID. ClsidFromProgID      // gets this information from the registry.      CLSID clsid;      CLSIDFromProgID(L"Excel.Application", &clsid);        // Get an interface to the running instance, if any..      IUnknown *pUnk;      HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);      ASSERT(!FAILED(hr));      // Get IDispatch interface for Automation...      IDispatch *pDisp;      hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);      ASSERT(!FAILED(hr));      // Release the no-longer-needed IUnknown...      pUnk->Release();
    Σημείωση: Εάν υπάρχουν πολλές παρουσίες που εκτελούνται από την εφαρμογή του Office που θέλετε να επισυνάψετε, θα μπορείτε να επισυνάψετε μόνο στην πρώτη παρουσία που ξεκίνησε ΧΡΗΣΙΜΟΠΟΙΏΝΤΑς το API του GetActiveObject (). Θεωρητικά, μπορείτε να επαναλάβετε την αποσύνθεση για κάθε μεμονωμένη παρουσία, αλλά οι εφαρμογές του Office δεν εγγραφούν εάν μια άλλη παρουσία βρίσκεται ήδη στην αποσύνθεση, επειδή το αναγνωριστικό για τον εαυτό της είναι πάντα το ίδιο (δεν ήταν δυνατό να διακριθεί έτσι κι αλλιώς). Αυτό σημαίνει ότι δεν μπορείτε να επισυνάψετε σε οποιαδήποτε παρουσία εκτός από την πρώτη. Ωστόσο, επειδή οι εφαρμογές του Office καταγράφουν επίσης τα έγγραφά τους στην αποσύνθεση, μπορείτε να επισυνάψετε με επιτυχία σε άλλες εμφανίσεις, επαναλαμβάνοντας την αποσύνθεση που αναζητά ένα συγκεκριμένο έγγραφο, επισυνάπτοντας σε αυτό και, στη συνέχεια, παίρνοντας το αντικείμενο της εφαρμογής από αυτό. Υπάρχει κάποιος κωδικός στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft για την επανάληψη της ΣΉΨΗς και την αναζήτηση για ένα όνομα εγγράφου:
    190985 ΔΙΑΔΙΚΑΣΙΕΣ: λήψη IDispatch από ένα έγγραφο του Excel ή του Word από ένα OCX
    Δεν θα χρειαστεί να το κάνετε αυτό για το PowerPoint, επειδή είναι μια εφαρμογή μίας παρουσίας. Μπορείτε να έχετε μόνο μία παρουσία της λειτουργίας του.
  6. Πώς μπορώ να μεταφέρω τις προαιρετικές παραμέτρους; Ορισμένες μέθοδοι έχουν τις "προαιρετικές" παραμέτρους. Στη Visual Basic, μπορείτε να τα παραλείψετε ανέμελα όταν καλείτε τη μέθοδο. Ωστόσο, κατά την κλήση με την Visual C++ πρέπει να μεταβιβάσετε μια ειδική παραλλαγή της οποίας το πεδίο. VT είναι VT_ERROR και το πεδίο. scode είναι DISP_E_PARAMNOTFOUND. Αυτό είναι:
          // VARIANT used in place of optional-parameters.      VARIANT varOpt;      varOpt.vt = VT_ERROR;      varOpt.scode = DISP_E_PARAMNOTFOUND;
    Αυτό είναι πραγματικά αυτό που κάνει η Visual Basic πίσω από τις σκηνές.
  7. Πώς μπορώ να προλάβω τα συμβάντα που εκτίθενται από τις εφαρμογές του Office; Βασικά, εφαρμόζετε το περιβάλλον εργασίας συμβάντων που θέλετε να πιάσετε (το "νεροχύτης") και να ρυθμίσετε μια συμβουλευτική σύνδεση με την εφαρμογή (την "προέλευση"). Το παρακάτω άρθρο σάς παρέχει παραδείγματα βήμα προς βήμα για το Microsoft Word:
    183599 ΔΙΑΔΙΚΑΣΙΕΣ: σύλληψη συμβάντων εφαρμογών του Microsoft WORD97 με τη χρήση VC + +
    Γενικά, για να ρυθμίσετε τη συμβουλευτική σύνδεση, θα λάβετε το IConnectionPointContainer του διακομιστή και θα καλείτε το FindConnectionPoint () με το καπάκι του περιβάλλοντος εργασίας συμβάντων. Αυτό σας παρέχει ένα περιβάλλον εργασίας IConnectionPoint και το μόνο που απομένει είναι να καλείτε συμβουλές () με μια παρουσία του περιβάλλοντος εργασίας του συμβάντος σας. Ο διακομιστής θα επανέλθει σε αυτό το περιβάλλον εργασίας, όταν προκύψουν αυτά τα συμβάντα.
  8. Ο κωδικός αυτοματοποίησης είναι πολύ αργός. Πώς μπορώ να επιταχύνω την κατάσταση; Μια συνηθισμένη αιτία προβλημάτων ταχύτητας με την αυτοματοποίηση είναι η επαναλαμβανόμενη ανάγνωση και η σύνταξη δεδομένων. Αυτό είναι τυπικό για προγράμματα-πελάτες αυτοματισμού του Excel. Ωστόσο, τα περισσότερα άτομα δεν γνωρίζουν ότι αυτά τα δεδομένα μπορούν συνήθως να συντάσσονται ή να διαβάζονται ταυτόχρονα με τη χρήση του SAFEARRAY. Ανατρέξτε στα παρακάτω άρθρα της Γνωσιακής Βάσης της Microsoft για περισσότερες πληροφορίες και ενημερωτικά παραδείγματα:
    186120 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση MFC για την αυτοματοποίηση του Excel και τη συμπλήρωση μιας περιοχής με έναν πίνακα
    186122 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση MFC για την αυτοματοποίηση του Excel & τη λήψη ενός πίνακα από μια περιοχή
    179706 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση MFC για την αυτοματοποίηση του Excel και τη δημιουργία/μορφοποίηση νέου βιβλίου εργασίας
    Επίσης, είναι σημαντικό να επισημανθεί ότι η χρήση του Προχείρου μπορεί μερικές φορές να βελτιώσει τις επιδόσεις. Για παράδειγμα, μπορείτε να αντιγράψετε τα δεδομένα σας στο Πρόχειρο και, στη συνέχεια, να χρησιμοποιήσετε την αυτοματοποίηση για να πείτε στο διακομιστή να κάνει επικόλληση. Ή το αντίστροφο, Ενημερώστε το διακομιστή για αντιγραφή στο Πρόχειρο και επικολλήστε την στην εφαρμογή σας.
  9. Τι σημαίνουν αυτές οι τεράστιες τιμές σφάλματος, όπως-2147352573 ή 0x80030002; Αυτές οι τιμές είναι γνωστές ως HRESULTs και ορίζονται στο Winerror. h. Οι αριθμοί είναι τόσο μεγάλοι, επειδή το πρώτο bit αντιπροσωπεύει το αν είναι αποτέλεσμα σφάλματος ή όχι. Μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα ErrLook. exe που παρέχεται με το Visual C++ για να μεταφράσετε αυτούς τους αριθμούς σε ουσιαστικές περιγραφές. Εάν θέλετε να αποκτήσετε μια περιγραφή για τα σφάλματα μέσω προγραμματισμού, μπορείτε να χρησιμοποιήσετε το API του FormatMessage (). Ανατρέξτε στα παρακάτω άρθρα της Γνωσιακής Βάσης της Microsoft για περισσότερες πληροφορίες και παραδείγματα σχετικά με τη χρήση του FormatMessage ():
    186063 ΠΛΗΡΟΦΟΡΊΕς: μετάφραση σφαλμάτων αυτοματοποίησης για VB/VBA
    122957 ΔΕΊΓΜΑ: εργαλεία αποκωδικοποιητή κωδικού σφάλματος Decode32 και Decode16 OLE
    Σημείωση: Εάν χρησιμοποιείτε το visual c++ 6,0 και έχετε μια μεταβλητή που περιέχει αυτήν την τιμή στο παράθυρο παρακολούθηση εντοπισμού σφαλμάτων, προσαρτήστε το ", HR" (χωρίς τις προσφορές) σε αυτήν για να μεταφραστεί η Visual c++ για εσάς!
  10. Τι είναι μια βιβλιοθήκη τύπων; Μια βιβλιοθήκη τύπων είναι παρόμοια με ένα αρχείο κεφαλίδας C/C++. Περιέχει τις διασυνδέσεις, τις μεθόδους και τις ιδιότητες που δημοσιεύει ένας διακομιστής. Μπορείτε να προβάλετε τη βιβλιοθήκη τύπων με το πρόγραμμα προβολής αντικειμένων OLE/COM (oleview. exe) που παρέχεται με το Visual C++. Εδώ θα βρείτε μια λίστα με τα ονόματα αρχείων της βιβλιοθήκης τύπων για το Microsoft Office 95, το 97 και το 2000:
           Office Application      | Type library       ------------------------+----------------       Word 95 and prior       | wb70en32.tlb       Excel 95 and prior      | xl5en32.olb       Powerpoint 95 and prior | Powerpoint.tlb       Access 95 and prior     | msaccess.tlb       Binder 95               | binder.tlb       Schedule+               | sp7en32.olb       Project                 | pj4en32.olb       Team Manager            | mstmgr1.olb       Word 97                 | msword8.olb       Excel 97                | excel8.olb       Powerpoint 97           | msppt8.olb       Access 97               | msacc8.olb       Binder 97               | msbdr8.olb       Graph 97                | graph8.olb       Outlook 97              | msoutl8.olb       Outlook 98              | msoutl85.olb       Word 2000               | msword9.olb       Excel 2000              | excel9.olb       Powerpoint 2000         | msppt9.olb       Access 2000             | msacc9.olb       Outlook 2000            | msoutl9.olb       Word 2002               | msword.olb       Excel 2002              | excel.exe       Powerpoint 2002         | msppt.olb       Access 2002             | msacc.olb       Outlook 2002            | msoutl.olb  
  1. Ο κωδικός αυτοματοποίησης λειτούργησε με το Excel 95, αλλά αποτυγχάνει με το Excel 97. Τι συμβαίνει? Το μοντέλο αντικειμένου για το Excel έκανε μια σημαντική αλλαγή από την έκδοση 95 στο 97. Το Excel 95 εφάρμοσε όλες τις μεθόδους και τις ιδιότητές του σε μία μόνο εφαρμογή του IDispatch. Αυτό σήμαινε ότι συχνά μπορούσατε να καλείτε τις μεθόδους που προορίζονται για το αντικείμενο X, από το αντικείμενο Y. Αυτό δεν ήταν καλό σχέδιο, επομένως, στο Office 97, κάθε αντικείμενο έχει τη δική του ξεχωριστή εφαρμογή IDispatch. Αυτό σημαίνει ότι εάν ζητήσετε μια μέθοδο ή μια ιδιότητα από το αντικείμενο X από ένα ξεχωριστό αντικείμενο Y, εμφανίζεται το σφάλμα 0x80020003,-2147352573, "το μέλος δεν βρέθηκε". Για να αποφύγετε αυτό το σφάλμα, πρέπει να βεβαιωθείτε ότι το υποκείμενο περιβάλλον εργασίας IDispatch από το οποίο πραγματοποιείτε κλήσεις είναι το σημασιολογικά σωστό. Για περισσότερες πληροφορίες, ανατρέξτε στα παρακάτω άρθρα της Γνωσιακής Βάσης της Microsoft:
    172108 ΔΙΑΔΙΚΑΣΙΕΣ: αντιμετώπιση προβλημάτων "δεν βρέθηκε μέλος", σφάλμα 0x80020003
  2. Η εφαρμογή αυτοματοποίηση παραμένει στη μνήμη μετά την ολοκλήρωση του προγράμματος. Τι συμβαίνει? Το πιθανότερο είναι ότι αυτό συμβαίνει επειδή έχετε ξεχάσει να εκδώσετε ένα κεκτημένο περιβάλλον εργασίας και θα πρέπει να το εντοπίσετε. Ακολουθούν ορισμένες γενικές προτάσεις και τα στοιχεία που πρέπει να αναζητείτε:
    • Εάν χρησιμοποιείτε το #import, είναι πολύ πιθανό ότι θα μπορούσατε να εκτελέσετε ένα από τα σφάλματα μέτρησης αναφοράς που σχετίζονται με αυτό. Συχνά οι χρόνοι τα ζωύφια μπορούν να εργαστούν γύρω, αλλά συνήθως προτιμάται να χρησιμοποιήσει μιας από τις άλλες μεθόδους αυτοματοποίησης. το #import δεν λειτουργεί πολύ καλά με τις εφαρμογές του Office, επειδή οι βιβλιοθήκες τύπου και η χρήση του είναι αρκετά περίπλοκες. Επίσης, αυτά τα προβλήματα μέτρησης αναφοράς είναι δύσκολο να τα εντοπίσετε, επειδή πολλές κλήσεις COM σε επίπεδο διασύνδεσης βρίσκονται πίσω από τις σκηνές κατά τη χρήση του #import.
    • Βεβαιωθείτε ότι καλείτε οποιεσδήποτε μεθόδους, όπως ανοικτές ή νέες, που επιστρέφουν ένα IDispatch * (LPDISPATCH) και αγνοούν την τιμή επιστροφής. Εάν είστε, τότε εγκαταλείπετε αυτό το περιβάλλον εργασίας που επιστρέφεται και θα πρέπει να αλλάξετε τον κωδικό σας, ώστε να τον αποδεσμεύσετε όταν δεν χρειάζεται πλέον.
    • Βαθμιαία σχολιάστε τις ενότητες του κώδικά σας μέχρι να εξαφανιστεί το πρόβλημα και, στη συνέχεια, προσθέστε το ξανά συνετά για να εντοπίσετε πού ξεκινά το πρόβλημα.
    • Σημειώστε ότι ορισμένες εφαρμογές θα παραμείνουν σε λειτουργία εάν ο χρήστης έχει "ακουμπήσει" την εφαρμογή. Εάν αυτό συμβεί κατά την αυτοματοποίηση, τότε η εφαρμογή πιθανώς θα παραμείνει σε λειτουργία μετά. Οι εφαρμογές του Office έχουν μια ιδιότητα "UserControl" στο αντικείμενο Application, την οποία μπορείτε να διαβάσετε/γράψετε για να αλλάξετε αυτήν τη συμπεριφορά.
    • Επίσης, ορισμένες εφαρμογές θα αποφασίσουν να παραμείνουν σε λειτουργία εάν έχει προκύψει αρκετό περιβάλλον εργασίας χρήστη "ενέργεια". Εάν σκοπεύετε να τερματίσετε την εφαρμογή, στη συνέχεια, ονομάστε τη μέθοδο Quit () στο αντικείμενο Application. Το Word θα τερματιστεί ανεξάρτητα από το πλήθος των αναφορών του όταν καλείται το κλείσιμο. Αυτή η συμπεριφορά COM δεν είναι αναμενόμενη. Το Excel, ωστόσο, θα αποκρύπτεται σωστά, αλλά θα παραμένει σε λειτουργία μέχρι να κυκλοφορήσουν όλες οι εκκρεμείς διασυνδέσεις. Γενικά, θα πρέπει να εκδώσετε όλες τις εκκρεμείς αναφορές και μόνο να τερματίσετε τις κλήσεις () Εάν σκοπεύετε να κλείσετε την εφαρμογή.
  3. Γνωρίζω τι θέλω να κάνω ως χρήστης εφαρμογών του Office, αλλά πώς μπορώ να το κάνω μέσω προγραμματισμού μέσω αυτοματισμού; Αυτό που σας ενδιαφέρει είναι τα αντικείμενα, οι μέθοδοι και οι ιδιότητες που πρέπει να χρησιμοποιήσετε. Ο καλύτερος τρόπος για να μάθετε πώς μπορείτε να περιηγηθείτε στα μοντέλα αντικειμένων του Word, του Excel και του PowerPoint, με βάση το τι θέλετε να κάνετε ως χρήστης, είναι να χρησιμοποιήσετε την καταγραφή μακροεντολών. Απλώς επιλέξτε μακροεντολή \ ' Εγγραφή νέας μακροεντολής ' από το μενού Εργαλεία, εκτελέστε την εργασία που σας ενδιαφέρει και, στη συνέχεια, επιλέξτε μακροεντολή \ ' Διακοπή εγγραφής '. Αφού ολοκληρώσετε την εγγραφή, επιλέξτε Macro\Macros από το μενού Εργαλεία, επιλέξτε τη μακροεντολή που έχετε καταγράψει και, στη συνέχεια, κάντε κλικ στην επιλογή Επεξεργασία. Αυτό θα σας μεταφέρει στον κώδικα VBA που δημιουργήθηκε και ο οποίος θα ολοκληρώσει την εργασία που καταγράψατε. Λάβετε υπόψη ότι η καταγεγραμμένη μακροεντολή δεν θα είναι ο καλύτερος δυνατός κώδικας στις περισσότερες περιπτώσεις, αλλά τα πάει πολύ καλά για ένα γρήγορο παράδειγμα.
  4. Μπορώ να αυτοματοποιήσω μια ενσωματωμένη εφαρμογή του Office; Απολύτως. Το τέχνασμα είναι να πάρει το δείκτη IDispatch: αυτό δίνεται στην Visual C++ Technical Note 39 (TN039). Ανατρέξτε στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft για ένα παράδειγμα βήμα προς βήμα:
    184663 ΔΙΑΔΙΚΑΣΙΕΣ: ενσωμάτωση και αυτοματοποίηση ενός φύλλου εργασίας του Microsoft Excel με MFC
  5. Πώς μπορώ να αποκτήσω πρόσβαση στις ιδιότητες του εγγράφου μου σε ένα έγγραφο του Office; Οι ιδιότητες του εγγράφου είναι προσβάσιμες μέσω αυτοματισμού ή απευθείας μέσω του IPropertyStorage. Τα παρακάτω άρθρα της Γνωσιακής Βάσης της Microsoft εμφανίζουν κάθε μέθοδο:
    179494 ΔΙΑΔΙΚΑΣΙΕΣ: χρήση αυτοματισμού για την ανάκτηση ενσωματωμένων ιδιοτήτων εγγράφου
    186898 ΔΙΑΔΙΚΑΣΙΕΣ: ανάγνωση ιδιοτήτων σύνθετων εγγράφων απευθείας με VC + +