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:
mkdir Debug
Utilizzare quindi il comando
cd
per spostarsi nella cartella Debug.
Utilizzare il seguente comando per generare l'assembly per Word 2002:
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;
}
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.
Lasciare un commento su queste informazioni
Queste informazioni hanno risolto il problema?
Sì
No
Non so
Queste informazioni erano pertinenti?
Sì
No
In che modo possiamo migliorarle?
Per salvaguardare la privacy, non includere informazioni personali nei commenti.
Grazie. I commenti e suggerimenti forniti verranno utilizzati per migliorare la qualità dei contenuti di supporto tecnico. Per ulteriori opzioni di assistenza, visitare la home page del Supporto Tecnico Microsoft.