James ha un programma, esterno a Word, che crea automaticamente un piccolo file di testo su base regolare. (Il file di testo ha sempre lo stesso nome.) James pensa che sarebbe bello avere una macro che potrebbe importare il file di testo in un documento di Word e inserirlo subito dopo un segnalibro che ha definito nel documento.

Ci sono un paio di modi per affrontare questo problema. Se l’obiettivo è semplicemente includere qualunque sia il contenuto corrente del file di testo, non avrai bisogno di una macro: usa semplicemente il campo INCLUDETEXT per fare riferimento al file che desideri includere. Ogni volta che aggiorni i campi nel tuo documento, Word esce e acquisisce il contenuto corrente del file di testo e lo include nel tuo documento.

Se, tuttavia, desideri aggiungere continuamente il contenuto corrente del file di testo al tuo documento, dovrai utilizzare una macro. Un approccio semplice consiste nell’usare il campo INCLUDETEXT all’interno della macro stessa, in questo modo:

Sub InsertTextFileAfterBookmark1()

With Selection         .GoTo what:=wdGoToBookmark, Name:="mybmk"

.Fields.Add Range:=Selection.Range, _           Type:=wdFieldIncludeText, Text:="c:\\myfile.txt \c" _           & Chr(32) & "plaintext" & Chr(32) & ""

.MoveLeft , 1         .Fields.Unlink         .MoveEnd     End With End Sub

La macro passa alla posizione del segnalibro, inserisce un campo INCLUDETEXT, seleziona il campo e quindi lo scollega. Il risultato è che il contenuto del file di testo viene inserito nel documento. Lo scopo dello scollegamento del campo è essenzialmente quello di eliminare il campo INCLUDETEXT, sostituendolo con i risultati di quel campo (il contenuto del file).

Per utilizzare la macro, è sufficiente modificare il codice per riflettere il nome del segnalibro e il percorso completo del file di testo che si desidera inserire. Inoltre, assicurati di utilizzare le doppie barre rovesciate all’interno della specifica del percorso; ciò è necessario affinché il codice di campo funzioni correttamente.

Un altro approccio consiste nel rinunciare del tutto al campo INCLUDETEXT e inserire semplicemente il contenuto del file. La seguente versione della macro fa proprio questo:

Sub InsertTextFileAfterBookmark2()

If ActiveDocument.Bookmarks.Exists("mybmk") = True Then         ActiveDocument.Bookmarks("mybmk").Select         Selection.InsertFile FileName:="c:\myfile.txt"

Else         MsgBox "Bookmark ""mybmk"" does not exist!"

End If End Sub

La macro verifica l’esistenza del segnalibro denominato mybmk (puoi e dovresti modificarlo) e quindi utilizza il metodo InsertFile per inserire il contenuto del file. Dovresti renderti conto che, come scritto, la macro sovrascriverà il segnalibro. Se vuoi assicurarti che il segnalibro rimanga intatto, dovrai aggiungere una riga di codice per comprimere il segnalibro al suo punto finale, appena prima di inserire il file:

Selection.Collapse Direction:=wdCollapseEnd

La tua macro può essere fantasiosa quanto vuoi, ovviamente. L’esempio seguente mostra una macro più completa che offre la possibilità di specificare quanto spazio mettere tra il segnalibro e il contenuto del file che si desidera inserire. Tutto quello che devi fare è assicurarti di regolare la macro nei punti (1), (2) e (3) per riflettere il modo in cui desideri che funzioni. (I commenti nella macro spiegano quali sono le aspettative e le opzioni.)

Sub InsertTextFileAfterBookmark3()

' This macro reads the contents of a specified text file     ' and inserts the text after a particular bookmark in     ' the active document.



Dim InsertSpacer As Integer     Dim FileContent As String

' (1) Pick a number to insert something between the     '     bookmark and the inserted text as spacing:

'     0 = No space. Text is inserted immediately     '         after the bookmark     '     1 = Insert one space between bookmark and text     '     2 = Insert paragraph mark between bookmark and text     '     3 = Insert 2 paragraph marks between bookmark     '         and text

InsertSpacer = 1

' (2) Set a constant for the name of the file to import.

'     Change the file name inside the quotes below to     '     the full path and file name of the text file to     '     import:



Const TextFile As String = "c:\myfile.txt"

' (3) Change the file name in the quotes below to the     '     name of the bookmark after which you want to     '     insert the text:



Const BookmarkName As String = "mybmk"



' Handle errors     On Error GoTo Oops

' Open and grab contents of the file     Open TextFile For Input As #1     FileContent = Input(LOF(1), #1)

Close #1

' Find the bookmark in the active document     Selection.GoTo What:=wdGoToBookmark, Name:="MyBookmark"



' Move the cursor to the end of the bookmark     Selection.MoveRight Unit:=wdCharacter, Count:=1

Select Case InsertSpacer         Case 0             ' Do nothing. Text inserted immediately         Case 1             ' Insert a space             Selection.TypeText Text:=" "

Case 2             'Insert a paragraph mark             Selection.TypeText Text:=vbCrLf         Case 3             'Insert two paragraph marks             Selection.TypeText Text:=vbCrLf & vbCrLf     End Select

' Insert the text file:

Selection.TypeText Text:=FileContent     Exit Sub

Oops:

Select Case Err.Number         Case 55 ' File already open             ' Close the file             Close #1             ' Try again             Resume         Case 53 ' File not found             NotFound = "Could not find the file named: " _             & Chr(34) & TextFile & Chr(34) & vbCrLf _             & vbCrLf & "Verify the file name and path " _             & "in the macro code after " _             & Chr(34) & "Const TextFile As String =" & Chr(34)

MsgBox NotFound, vbOKOnly         Case Else             MsgBox "Error number: " & Err.Number & ", " _             & Err.Description, vbOKOnly     End Select End Sub

_Nota: _

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

WordTips è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (12193) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia a nastro di Word (Word 2007 e più tardi) qui: