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++ gestitoQuesto articolo è stato precedentemente pubblicato con il codice di riferimento I308408
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.
Per automatizzare Word con Visual C++ .NET allo scopo di recuperare e modificare le proprietà dei documenti, attenersi alla seguente procedura:
-
Avviare Microsoft Visual Studio .NET. Dal menu
File
scegliere
Nuovo, quindi scegliere
Progetto.
-
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.
-
Creare gli assembly di Office. Per eseguire questa operazione, attenersi alla seguente procedura:
-
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.
-
Utilizzare il comando
cd
per spostarsi nella cartella in cui verrà creato il progetto.
-
Creare la cartella di output per la configurazione di Debug mediante il seguente comando:
Utilizzare quindi il comando
cd
per spostarsi nella cartella Debug.
-
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.
-
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:
-
In
Esplora soluzioni, fare clic con il pulsante destro del mouse e scegliere
Proprietà.
-
Nel riquadro sinistro della finestra di dialogo
Pagine delle proprietà
fare clic sulla cartella
C/C++.
-
In
C/C++, selezionare la cartella
Generale.
-
Nella casella
Risolvi riferimenti #using, aggiungere il percorso alla cartella Debug e scegliere
OK.
-
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;
} -
Premere F5 per eseguire l'applicazione.
Per ulteriori informazioni, visitare il seguente sito Web di Microsoft Developer Network (MSDN):
Per informazioni generali su Visual C++ .NET, vedere il seguente newsgroup Usenet (informazioni in lingua inglese):
Visitare il supporto tecnico di Visual C++ .NET al sito (informazioni in lingua inglese):
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
| _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. | |