Eric ha un database Excel di informazioni sulla società. Vuole utilizzare una macro di Excel per copiare indirizzi e informazioni dal database in diversi documenti di Word. Eric è curioso di sapere come fare in modo che una macro di Excel apra un documento Word specifico in cui verranno incollate le informazioni.

Un modo per eseguire questa operazione è semplicemente non utilizzare Excel. Utilizzare invece la funzionalità di stampa unione di Word per estrarre le informazioni da un database di Excel.

Questo approccio funziona meglio se stai creando un documento da informazioni ben definite. Se, tuttavia, è necessario aprire una serie di documenti e copiare i dati dal database di Excel nei documenti, la stampa unione non farà il trucco.

Word ha un nome speciale per utilizzare le macro per lavorare con diverse applicazioni di Office: Office Automation. La creazione di macro di Office Automation è un po ‘più complessa della creazione di una macro che funzionerà esclusivamente all’interno di un’applicazione specifica, come Excel. Una delle cose che potresti voler fare è scaricare un file della Guida gratuito che include molte informazioni sulle applicazioni di Office Automation. È possibile scaricare il file dalla seguente pagina Microsoft:

http://support.microsoft.com/kb/302460

La procedura di base per aprire un documento di Word da una macro di Excel consiste nel creare un oggetto che fa riferimento all’applicazione di Word e quindi utilizzare quell’oggetto per aprire il documento. Il codice seguente illustra questo concetto:

Sub OpenWord()

Dim wdApp As Object     Dim wdDoc As Object     Set wdApp = CreateObject("Word.application")

Set wdDoc = wdApp.Documents.Open _       (FileName:="C:\Path\myTestDoc.doc")



' put your code here for working with Word ' This is Word VBA code, not Excel code

wdDoc.Close savechanges:=False     Set wdDoc = Nothing     wdApp.Quit     Set wdApp = Nothing End Sub

Dovrai cambiare il percorso e il nome del documento che desideri aprire, ma questo codice dimostra molto bene cosa è necessario fare per aprire il documento. Come scritto, il documento di Word (anzi, l’intera applicazione Word) non sarà visibile sullo schermo. Se preferisci che l’applicazione sia visibile, dovresti usare questa riga di codice all’inizio della macro:

wdApp.Visible = True

Un altro approccio per lavorare con un file Word dall’interno della macro di Excel consiste nell’usare DDE e la funzione SendKeys per copiare le informazioni.

Considera il seguente comando DDE:

ChannelNumber=Application.DDEInitiate{ _   app:="WinWord", topic:=FullPath

Il metodo DDEInitiate utilizza due proprietà: app e topic. La proprietà app indica l’applicazione che stai aprendo tramite DDE. Esempi tipici potrebbero essere “calc” per la calcolatrice o “WinWord” (in questo caso)

per l’applicazione Word. La proprietà topic indica il percorso completo del file di documento che stai aprendo. In questo caso, il percorso completo è contenuto nella variabile FullPath.

Usando questo metodo, puoi aprire un documento e poi usare SendKeys per copiare le informazioni in quel documento:

Sub PasteExcel2Word()

Dim channelNumber As String  'Application Handle     Dim FullPath As String

FullPath = 'C:\MyFolder\MyFile.Doc'     'Replace above with a file or loop of files

Selection.Copy  'Assumes you hilighted what you want copied

channelNumber = Application.DDEInitiate( _       app:="WinWord", topic:=FullPath     SendKeys "^v", False

Application.DDETerminate channelNumber End Sub

Il metodo Copy viene utilizzato per copiare le informazioni negli Appunti, quindi SendKeys utilizza ^ v (Ctrl + V) per incollare le informazioni nel documento di Word aperto utilizzando DDEInitiate.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2423) si applica a Microsoft Excel 97, 2000, 2002 e 2003.