Diagrammi

Introduzione all'automazione di Word

Ecco una semplice guida su come utilizzare l'automazione di Word con Edraw Office Viewer Component. Con l'automazione di Word è facile inserire contenuti nel documento appena creato, fare la fusione di email o sostituire il testo.

I programmatori possono automatizzare rapidamente le applicazioni di Microsoft Office tramite VBA. Quando queste sono combinate con VBScript, hanno uno strumento molto potente a disposizione.

Edraw Office Viewer Component può ospitare MS Word all'interno di un modulo o di una pagina web. Il componente supporta l'automazione di Word. In questo articolo vediamo come utilizzare l'automazione di Word con Edraw Office Viewer Component.

Metodi di automazione di Word con wrapping e componenti visivi di Office

Edraw Office Viewer Component racchiude alcuni metodi di automazione di Word comunemente usati. Lo sviluppatore può semplicemente usare questi metodi e automatizzare in Word.

boolean WordShowRevisions ([in] boolean Show)

Mostra/nasconde le revisioni del programma office.

boolean WordAcceptAllRevisions ([in] boolean Receipt)

Accetta o rifiuta tutte le modifiche di un documento o di un intervallo.

long WordGetBookmarkCount()

Restituisce il numero di segnalibri.
BSTR WordReadBookmarkInfo([in] long Pos, [in] boolean NameOrValue)

Restituisce il nome o il valore del segnalibro speciale.
Pos: l'indice dei segnalibri nel documento. Da 1 a ...
NameOrValue: True restituisce il nome del segnalibro, False restituisce il valore del segnalibro.

Esempio:

Il seguente script java mostra come leggere le informazioni del segnalibro.

function Readbookmark_Example ()
{
Var count = edword.GetBookmarkCount();
For(int i=1; i<=count; i++)
{
Var name = edword.GetBookmarkInfo(i, true);
Var value = edword.GetBookmarkInfo(i, false);
}

boolean WordWriteBookmarkInfo([in] BSTR Name, [in] BSTR Value)

Scrive il valore del segnalibro speciale.
Name: Il nome del segnalibro.
Value: Il valore del segnalibro.

boolean WordInsertFile([in] BSTR FilePath, [in, optional] VARIANT InDocPos)

Inserisce un file nel file Word aperto.
FilePath: Il percorso del file deve essere inserito.
InDocPos: La posizione di inserimento. WdInPocPos.

enum WdInDocPos
{
wdInDocumentPosCursor = 1,
wdInDocumentPosStart = 2,
wdInDocumentPosEnd = 3 ,
}WdInDocPos;

boolean WordInsertText([in] BSTR Text, [in, optional] VARIANT InDocPos)

Inserisce il contenuto di testo nel file Word aperto.
Text: La stringa di testo deve essere inserita.
InDocPos: La posizione di inserimento. WdInPocPos.

enum WdInDocPos
{
wdInDocumentPosCursor = 1,
wdInDocumentPosStart = 2,
wdInDocumentPosEnd = 3 ,
}WdInDocPos;

boolean WordInsertPicture([in] BSTR FilePath, [in] boolean InlineObject, [in, optional] VARIANT InDocPos)

Inserisce un'immagine nel file Word aperto.
FilePath: Il percorso dell'immagine deve essere inserito.
InDocPos: La posizione di inserimento. WdInPocPos.

enum WdInDocPos
{
wdInDocumentPosCursor = 1,
wdInDocumentPosStart = 2,
wdInDocumentPosEnd = 3 ,
}WdInDocPos;

boolean WordInsertBreak([in] WdBreakType BreakType)

Inserisce un'interruzione nel file Word aperto.
BreakType: Il tipo di interruzione. WdBreakType.

typedef enum WdBreakType
{
wdPageBreak = 7,
wdColumnBreak = 8,
wdSectionBreakNextPage = 2,
wdSectionBreakContinuous = 3,
wdSectionBreakEvenPage = 4,
wdSectionBreakOddPage = 5,
wdLineBreak = 6,
wdLineBreakClearLeft = 9,
wdLineBreakClearRight = 10,
wdTextWrappingBreak = 11,
}WdBreakType;

Esempio

Il seguente script java mostra come inserire un'interruzione di riga.

function InsertBreak_Example ()
{
Edword.WordInsertBreak(6);
}

boolean WordGotoItem([in] WdGoToItem What, [in] WdGoToDirection Which, [in, optional] VARIANT Count, [in, optional] VARIANT Name)

Passa all'elemento specificato in Word.
What: oggetto facoltativo. Il tipo di articolo a cui la gamma o la selezione viene spostata. Può essere una delle costanti WdGoToItem.
Which: Oggetto facoltativo. L'elemento a cui appartiene l'intervallo o la selezione viene spostata. Può essere una delle costanti WdGoToDirection.
Count: oggetto facoltativo. Il numero dell'elemento nella casella documento. Il valore predefinito è 1.
Solo i valori positivi sono validi. Per specificare un elemento che precede l'intervallo o la selezione, utilizzare wdGoToPrevious come parametro quale argomento e specificare un valore di Conteggio.
Name: oggetto facoltativo. L'argomento è wdGoToBookmark, wdGoToComment, wdGoToField o wdGoToObject e specifica un nome.

enum WdGoToItem
{
wdGoToStart = 101,
wdGoToEnd = 102,
wdGoToBookmark = -1 ,
wdGoToComment = 6 ,
wdGoToEndnote = 5 ,
wdGoToEquation = 10 ,
wdGoToField = 7 ,
wdGoToFootnote = 4 ,
wdGoToGrammaticalError= 14 ,
wdGoToGraphic = 8 ,
wdGoToHeading= 11 ,
wdGoToLine = 3 ,
wdGoToObject = 9 ,
wdGoToPage = 1 ,
wdGoToPercent = 12 ,
wdGoToProofreadingError = 15 ,
wdGoToSection = 0 ,
wdGoToSpellingError = 13 ,
wdGoToTable = 2 ,
}WdGoToItem;

enum WdGoToDirection
{
wdGoToAbsolute = 1,
wdGoToFirst = 1,
wdGoToLast = -1 ,
wdGoToNext = 2 ,
wdGoToPrevious = 3 ,
wdGoToRelative = 2 ,
}WdGoToDirection;

Esempio

Il seguente script java mostra come andare alla fine del file.

function GoToItem_Example ()
{
Edword.WordGoToItem(102, 1);
}

boolean WordReplaceText([in] BSTR Text, [in] BSTR ReplaceText, [in] boolean MatchWholeWord, [in] boolean MatchCase)

Sostituisce tutto il valore stringa specificato con un'altra stringa.
Text: oggetto facoltativo. Il testo da cercare.
ReplaceText: la sostituzione text.
MatchCase: oggetto facoltativo. True per specificare che il testo fa distinzione tra maiuscole e minuscole. Corrisponde al controllo del caso di corrispondenza nella finestra di dialogo Trova e sostituisci (menu Modifica).
MatchWholeWord: oggetto opzionale. Operazione per individuare solo parole intere, non testo che fa parte di una parola più grande. Corrisponde solo alle parole Trova intere nella finestra di dialogo Trova e sostituisci.

boolean WordMergeAndCompare([in] BSTR TargetFilePath)

Confronta e unisce i documenti e li mostra tutti nella finestra corrente.
TargetFilepath: Richiede stringa.

boolean WordDisableDragAndDrop(boolean Disable)

Disabilita il trascinamento.
long WordGetRevisionCount()

Restituisce il numero di revisioni.

BSTR WordReadRevisionInfo([in] long Pos, [in] WdRevisionType RevType)

Restituisce il nome o il valore del segnalibro segnalibro speciale.
Pos: L'indice dei segnalibri nel documento. Da 1 a...
RevType: Il tipo di revisione. WdRevision.

enum WdRevisionType
{
wdRevisionAuthor = 0,
wdRevisionDate = 1,
wdRevisionType = 2,
wdRevisionText = 3,
}WdRevisionType;

Esempio

Il seguente script java mostra come leggere le informazioni del segnalibro.

function ReadRevision_Example ()
{
Var count = edword.WordGetRevisionCount();
For(int i=1; i<=count; i++)
{
Var author = edword.WordReadRevisionInfo(i, 0);
Var text = edword. WordReadRevisionInfo (i, 3);
}

boolean WordAcceptRevision([in] long Pos, [in] boolean Accept)

Accetta o rifiuta la modifica tracciata.
Pos: L'indice dei segnalibri nel documento. Da 1 a...
Accept: accetta o rifiuta la revisione.

boolean WordDisableViewRightClickMenu(boolean Disable)

Disattiva il menu del tasto destro del mouse in MS Word.
boolean WordCopyToClipboard()

Copia l'intero contenuto negli appunti.

boolean WordCopyToClipboardAsPicture()

Copia l'intero contenuto negli appunti come immagine.

boolean WordPasteFromClipboard([in, optional] VARIANT InDocPos)

Incolla i dati degli appunti nel file Word aperto.
InDocPos: Posizione. WdInDocPos.

enum WdInDocPos
{
wdInDocumentPosCursor = 1,
wdInDocumentPosStart = 2,
wdInDocumentPosEnd = 3 ,
}WdInDocPos;

boolean WordPasteSpecialFromClipboard([in] WdPasteDataType lFormatType, [in] boolean vFloatOverText, [in, optional] VARIANT InDocPos)

Incolla nel file Word aperto i dati con un formato speciale.
lFormatType: Tipo di formato dell'incollamento. WdPasteDateType.
vFloatOverText: True = fluttua l'oggetto sul testo.
InDocPos: Posizione. WdInDocPos.

enum WdPasteDataType
{
wdPasteBitmap = 4,
wdPasteDeviceIndependentBitmap = 5,
wdPasteEnhancedMetafile = 9,
wdPasteHTML = 10,
wdPasteHyperlink = 7,
wdPasteMetafilePicture = 3,
wdPasteOLEObject = 0,
wdPasteRTF = 1,
wdPasteShape = 8,
wdPasteText = 2,
}WdPasteDataType;

Automatizzare Word con VBA e VBScript

L'automazione è un oggetto COM che implementa l'interfaccia IDispatch. Gli oggetti di automazione sono denominati Oggetti ActiveX, mentre un'applicazione che modifica un oggetto viene definito client ActiveX. Questa interfaccia mostra quattro metodi, il più importante dei quali è Invoke. Questo metodo consente di chiamare i metodi di una classe in base al nome, con un numero arbitrario di parametri. Né il nome del metodo né il numero di parametri devono essere noti in fase di compilazione, come nel caso degli oggetti COM non di supporto all'automazione. Inoltre, nei linguaggi di scripting non esiste affatto un "tempo di compilazione". Questa tecnica è chiamata rilegatura tardiva. La maggior parte dei componenti COM esistenti sono conformi all'automazione e inoltre consente sia l'associazione tardiva che la tradizionale associazione precoce in fase di compilazione. Questo è ottenuto implementando le cosiddette interfacce duali, ossia interfacce derivate da IDispatch. Generalmente, entrambe le associazioni in ritardo e l'associazione anticipata espongono la stessa funzionalità per i clienti di automazione; linguaggi quali Visual Basic e Delphi, così come alcune librerie C ++, che forniscono un livello più elevato di astrazione per COM, per assicurarsi che tutti i componenti di automazione creati in queste lingue duplichino le loro interfacce con l'associazione tardiva e anticipata. Molti sviluppatori hanno familiarità con la parola applicazione in VB, C#, VC o Delphi. Questo è molto buono. Questo ti aiuterà a iniziare rapidamente a scrivere codici utilizzando l'automazione di Word nel componente di Office.

Do Standard Word Automation

In primo luogo, è possibile ottenere l'oggetto Documento o Applicazione tramite il metodo ActiveDocument.

IDispatch* ActiveDocument();

Restituisce l'interfaccia Automation dell'oggetto documento.

Il metodo consente di ottenere un riferimento all'interfaccia IDispatch dell'oggetto incorporato. Da questa interfaccia è possibile automatizzare l'oggetto per eseguire attività, modificare parti del documento o raccogliere informazioni su ciò che l'utente ha aggiunto o rimosso.

Ad esempio, è possibile inserire una tabella nel documento Word:

<script language="javascript">
function VBAProgramming()
{
if(document.OA1.IsOpened)
{
if(document.all.OA1.GetCurrentProgID() == "Word.Application"){
var objWord = document.OA1.ActiveDocument;
var range = objWord.Range(0,0);
var WTable = objWord.Tables.Add(range, 3,3);
WTable.Cell(1,1).Range.Font.Name = "Times New Roman";
WTable.Cell(1,1).Range.Text = "Automation 1";
WTable.Cell(1,2).Range.Font.Size = 18;
WTable.Cell(1,2).Range.Bold = true;
WTable.Cell(1,2).Range.Font.Italic = true;
WTable.Cell(1,2).Range.Text = "Automation 2";
WTable.Cell(2,1).Range.ParagraphFormat.Alignment = 1; // 0= Left, 1=Center, 2=Right
WTable.Cell(2,1).Range.Font.Name = "Arial";
WTable.Cell(2,1).Range.Font.Size = 12;
WTable.Cell(2,1).Range.Bold = false;
WTable.Cell(2,1).Range.ParagraphFormat.Alignment = 2;
WTable.Cell(3,3).Range.Font.Name = "Times New Roman";
WTable.Cell(3,3).Range.Font.Size = 14;
WTable.Cell(3,3).Range.Bold = true;
WTable.Cell(3,3).Range.Font.Underline = true;
WTable.Cell(3,3).Range.ParagraphFormat.Alignment = 0;
WTable.Cell(3,2).Range.Text = "Automation 3";
}
else if(document.all.OA1.GetCurrentProgID() == "Excel.Application"){
var objExcel = document.OA1.GetApplication();
var worksheet = objExcel.ActiveSheet;
worksheet.cells(1,1).value ="100";
worksheet.cells(1,2).value ="101";
worksheet.cells(1,3).value ="102";
worksheet.cells(2,1).value ="103";
worksheet.cells(2,2).value ="104";
worksheet.cells(2,3).value ="105";
}
}
}
</script>

IDispatch* GetApplication();

Restituisce l'interfaccia di automazione dell'applicazione.

In questo programma useremo l'oggetto Word. Useremo due oggetti, uno della Classe di applicazione e una della classe Documento di Word. Apriremo l'applicazione e un documento. L'utente potrà salvare il documento. Segui i passaggi seguenti per creare l'applicazione:

Avvia un nuovo progetto EXE. Seleziona la libreria di oggetti di Microsoft Word 9.0 dalla finestra di dialogo. Ricorda, dovresti avere l'istanza di Word sul tuo sistema. Aggiungi un nuovo modulo al progetto. Nella sezione dichiarazioni generali del modulo, aggiungi il codice riportato di seguito.

Recupera il testo con Edraw Office Viewer Componente

È possibile utilizzare l'automazione di office per sostituire il testo con il componente.

javascript code:

var appWord = document.OA1.GetApplication;
appWord.Selection.Find.Execute('text', false, false, false, false, false, 1, false, false, 'replacetext', 2, false, false, false, false);

vbscript code:

Set objWord = document.OA1.GetApplication
Set objSelection = objWord.Selection
objSelection.Find.ClearFormatting
objSelection.Find.Replacement.ClearFormatting
objSelection.Find.Text = varFind
objSelection.Find.Replacement.Text = varReplace
objSelection.Find.Forward = True
objSelection.Find.Wrap = 1 'wdFindContinue
objSelection.Find.Format = False
objSelection.Find.MatchCase = False
objSelection.Find.MatchWholeWord = False
objSelection.Find.MatchWildcards = False
objSelection.Find.MatchSoundsLike = False
objSelection.Find.MatchAllWordForms = False
objSelection.Find.Execute

Conclusione

Questo articolo mostra come utilizzare l'automazione di Word per migliorare il componente Office Viewer e come richiamare i metodi di automazione di Word per realizzare l'automazione di Word.

Articoli correlati