How to Utilizzare l'automazione per ottenere e impostare proprietà di un documento di Office con Visual C# .NET

Sommario

In questo articolo viene dimostrato come creare un client di automazione in Visual C# .NET che modifica le proprietà di un documento di Word. Sebbene il codice di esempio si riferisca esplicitamente a Word, è possibile utilizzare le stesse tecniche per automatizzare Excel e PowerPoint.

Informazioni

Creare un client di automazione per Microsoft Word

  1. Avviare Visual Studio .NET. Scegliere
    Nuovo
    dal menu
    File, quindi scegliere
    Progetto. Selezionare
    Applicazione Windows
    dai tipi di progetto Visual C#.
    Form1
    viene creato per impostazione predefinita.
  2. Aggiungere un riferimento alla
    Libreria oggetti di Microsoft Word. Per eseguire questa operazione, attenersi alla seguente procedura:
    1. Scegliere
      Aggiungi riferimento
      dal menu
      Progetto.
    2. Nella scheda
      COM
      individuare
      Microsoft Word Object Library
      e scegliere
      Seleziona.


      NOTA: la Libreria oggetti di Microsoft Word contiene un numero di versione. Il numero di versione per Word 2000 è 9.0, mentre quello per Word 2002 è 10.0.
    3. Scegliere
      OK
      nella finestra di dialogo
      Aggiungi riferimento
      per confermare le selezioni. Se viene richiesto di generare wrapper per le librerie selezionate, scegliere
      .
  3. Scegliere
    Casella degli strumenti
    dal menu
    Visualizza
    per visualizzare la Casella degli strumenti e aggiungere un pulsante a Form1.
  4. Fare doppio clic su
    Button1. Verrà visualizzata la finestra del codice del form.
  5. Nella finestra del codice sostituire il codice seguente
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    con:
    private void button1_Click(object sender, System.EventArgs e)
    {
    Word.Application oWord;
    Word._Document oDoc;
    object oMissing = Missing.Value;
    object oDocBuiltInProps;
    object oDocCustomProps;

    //Create an instance of Microsoft Word and make it visible.
    oWord = new Word.Application();
    oWord.Visible = true;

    //Create a new Document and get the BuiltInDocumentProperties collection.
    oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing,
    ref oMissing);
    oDocBuiltInProps = oDoc.BuiltInDocumentProperties;
    Type typeDocBuiltInProps = oDocBuiltInProps.GetType();

    //Get the Author property and display it.
    string strIndex = "Author";
    string strValue;
    object oDocAuthorProp = typeDocBuiltInProps.InvokeMember("Item",
    BindingFlags.Default |
    BindingFlags.GetProperty,
    null,oDocBuiltInProps,
    new object[] {strIndex} );
    Type typeDocAuthorProp = oDocAuthorProp.GetType();
    strValue = typeDocAuthorProp.InvokeMember("Value",
    BindingFlags.Default |
    BindingFlags.GetProperty,
    null,oDocAuthorProp,
    new object[] {} ).ToString();
    MessageBox.Show( "The Author is: " + strValue,"Author" );

    //Set the Subject property.
    strIndex = "Subject";
    strValue = "The Subject";
    typeDocAuthorProp.InvokeMember("Item",
    BindingFlags.Default |
    BindingFlags.SetProperty,
    null,oDocBuiltInProps,
    new object[] {strIndex,strValue} );

    //Add a property/value pair to the CustomDocumentProperties collection.
    oDocCustomProps = oDoc.CustomDocumentProperties;
    Type typeDocCustomProps = oDocCustomProps.GetType();

    strIndex = "Knowledge Base Article";
    strValue = "Q303296";
    object[] oArgs = {strIndex,false,
    MsoDocProperties.msoPropertyTypeString,
    strValue};

    typeDocCustomProps.InvokeMember("Add",BindingFlags.Default |
    BindingFlags.InvokeMethod, null,
    oDocCustomProps, oArgs );

    MessageBox.Show("Select \"Properties\" from the File menu "
    + "to view the changes.\nSelect the Summary tab to view "
    + "the Subject property and the Custom tab to view the Knowledge"
    + "Base Article property.", "Check File Properties",
    MessageBoxButtons.OK,MessageBoxIcon.Information);
    }

  6. con: Scorrere verso l'alto la pagina del codice e aggiungere le righe seguenti alla fine dell'elenco delle direttive
    using. Per Word 2000:
    using System.Reflection;
    using Office; //Office 2000
    Per Word 2002:
    using System.Reflection;
    using Microsoft.Office.Core; //Office XP
  7. con: Premere F5 per eseguire l'applicazione.
NOTA: le interfacce
DocumentProperties
e
DocumentProperty
sono interfacce ad associazione tardiva. Per utilizzarle, è necessario trattarle al pari di un'interfaccia
IDispatch.

Riferimenti

Per ulteriori informazioni, visitare il seguente sito Web Microsoft Developer Network (MSDN) (informazioni in lingua inglese):
Microsoft Office Development with Visual Studio

http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (gli articoli con prefisso "Q" contengono informazioni in inglese):

303294 How to Use Automation to Get and Set Office Document Properties with Visual Basic .NET
Proprietà

ID articolo: 303296 - Ultima revisione: 29 giu 2007 - Revisione: 1

Feedback