Help and Support

Identificativo articolo: 308408 - Ultima modifica: venerdì 29 giugno 2007 - Revisione: 5.3

How to Uso dell'automazione per ottenere e impostare le proprietà di documenti Office da un client C++ gestito

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308408
Espandi tutto | Chiudi tutto

Sommario

Il presente articolo spiega come automatizzare Word con Visual C++ .NET per recuperare e modificare le proprietà dei documenti. Anche se l'esempio proposto in questo articolo è scritto specificamente per l'automatizzazione di Word, gli stessi concetti sono applicabili a Excel e PowerPoint.

Informazioni

Per automatizzare Word con Visual C++ .NET allo scopo di recuperare e modificare le proprietà dei documenti, attenersi alla seguente procedura:
  1. Avviare Microsoft Visual Studio .NET. Dal menu File scegliere Nuovo, quindi scegliere Progetto.
  2. In Tipi progetto, fare clic sulla cartella Progetti di Visual C++, quindi su Applicazione C++ gestita in Modelli. Assegnare un nome al progetto e prendere nota della cartella in cui il progetto verrà creato.
  3. Creare gli assembly di Office. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Aprire una finestra di comando. A tal fine scegliere Programmi dal menu Start, scegliere Microsoft Visual Studio .NET, fare clic su Strumenti di Visual Studio .NET, quindi scegliere Prompt dei comandi di Visual Studio .NET.
    2. Utilizzare il comando cd per spostarsi nella cartella in cui verrà creato il progetto.
    3. Creare la cartella di output per la configurazione di Debug mediante il seguente comando:
      mkdir Debug
      Utilizzare quindi il comando cd per spostarsi nella cartella Debug.
    4. Utilizzare il seguente comando per generare l'assembly per Word 2002:
      tlbimp "C:\Program Files\Microsoft Office\Office10\msword.olb"
      NOTA: questo è il percorso di installazione predefinito per la libreria degli oggetti di Word 2002. Se necessario, modificare il percorso in base alla propria installazione. Il percorso di installazione predefinito per la libreria di oggetti di Word 2000 è C:\Programmi\Microsoft Office\Office\msword9.olb.
  4. Aggiungere la cartella Debug all'elenco di directory in cui verranno effettuate le ricerche per risolvere i riferimenti a file passati alla direttiva using. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. In Esplora soluzioni, fare clic con il pulsante destro del mouse e scegliere Proprietà.
    2. Nel riquadro sinistro della finestra di dialogo Pagine delle proprietà fare clic sulla cartella C/C++.
    3. In C/C++, selezionare la cartella Generale.
    4. Nella casella Risolvi riferimenti #using, aggiungere il percorso alla cartella Debug e scegliere OK.
  5. Aprire il file di origine che contiene la definizione di _tmain nell'editor standard e sostituire il contenuto del file con il codice seguente:
    #include "stdafx.h"
    
    // OFFICE 10:
    #using "Office.dll"
    
    // OFFICE 9:
    // #using "<Full_Path_to_DLL>\Office.dll"
    
    #using "Word.dll"
    #using <mscorlib.dll>
    
    #include <tchar.h>
    
    using namespace System;
    using namespace System::Reflection;
    
    // OFFICE 10:
    using namespace Microsoft::Office::Core;
    
    // OFFICE 9:
    //using namespace Office;
    
    
    // This is the entry point for this application.
    int _tmain(void)
    {
       try{
          System::Object* pMissing = System::Reflection::Missing::Value;
          Object* pDocBuiltInProps;
          Object* pDocCustomProps;
          Object* pAuthorProp;
          Object* pValue;
    
          Console::WriteLine("\nStarting Microsoft Word...");
          Word::ApplicationClass* pWord = new Word::ApplicationClass;
          pWord->Visible = true;
    
          //Create a new document and get the BuiltInDocumentProperties collection.
          Word::Documents* pDocs = pWord->Documents;
          Word::Document* pDoc = pDocs->Add(&pMissing,&pMissing,&pMissing,&pMissing);
    
          //Get the Author property and display it.
          Console::WriteLine("\n\nRetrieving the Author Property...");
          pDocBuiltInProps = pDoc->BuiltInDocumentProperties;
          Object* pArgs[] = { S"Author" }; 
          pAuthorProp = pDocBuiltInProps->GetType()->InvokeMember(S"Item",
             BindingFlags::GetProperty, NULL, pDocBuiltInProps, pArgs);
          pValue = pAuthorProp->GetType()->InvokeMember(S"Value", 
             BindingFlags::GetProperty, NULL,pAuthorProp,NULL);
          Console::WriteLine(S"\n\tAuthor is: {0}",pValue->ToString());
          Console::WriteLine("\nPress ENTER to continue.");
          Console::ReadLine();
    
          //Set the Subject property.
    	  Console::WriteLine("\n\nSetting the Subject Property...");
          pArgs = new Object*[2];
          pArgs[0] = S"Subject";
          pArgs[1] = S"A sample subject";
          pDocBuiltInProps->GetType()->InvokeMember("Item", 
             BindingFlags::SetProperty, NULL, pDocBuiltInProps, pArgs );
    
          //Add a property/value pair to the CustomDocumentProperties collection.
          Console::WriteLine("\n\nSetting properties...");
          pDocCustomProps = pDoc->CustomDocumentProperties;		
          pArgs = new Object*[4];
          pArgs[0] = S"Knowledge Base Article";
          pArgs[1] = false;
          pArgs[2] = __box(MsoDocProperties::msoPropertyTypeString);
          pArgs[3] = S"Q308408";
          pDocCustomProps->GetType()->InvokeMember("Add",
             BindingFlags::InvokeMethod, NULL, pDocCustomProps, pArgs );
          Console::WriteLine(S"\n\t1. Select Properties from the File menu."
                S"\n\t2. Go to the Summary tab to view the Subject property."
                S"\n\t3. Go to the Custom tab to view the custom property.");
          Console::WriteLine("\nPress ENTER to end.");
          Console::ReadLine();
    
          }
          catch(Exception* e)
          {
             Console::WriteLine(S"Error automating Word...");
             Console::WriteLine(e->get_Message());
          }
    
       return 0;
    }
  6. Premere F5 per eseguire l'applicazione.

Riferimenti

Per ulteriori informazioni, visitare il seguente sito Web di Microsoft Developer Network (MSDN):
Sviluppo in Microsoft Office con Visual Studio (informazioni in lingua inglese)
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx)
Per informazioni generali su Visual C++ .NET, vedere il seguente newsgroup Usenet (informazioni in lingua inglese):
Microsoft.public.dotnet.languages.vc (http://go.microsoft.com/fwlink/?linkid=5870)
Visitare il supporto tecnico di Visual C++ .NET al sito (informazioni in lingua inglese):
Visual C++ .NET (2002) Support Center (http://support.microsoft.com/default.aspx?xmlid=fh%3ben-us%3bvcnet)

Le informazioni in questo articolo si applicano a
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2003
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Chiavi: 
_ik11561 kbautomation kbexcel kbgrpdso kbhowto kbnewsgrouplink kbword KB308408
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Traduzione articoli