Importación de un archivo de texto e inserción después de un marcador (Microsoft Word)
James tiene un programa, externo a Word, que crea automáticamente un pequeño archivo de texto de forma regular. (El archivo de texto siempre tiene el mismo nombre). James piensa que sería bueno tener una macro que pudiera importar el archivo de texto a un documento de Word e insertarlo justo después de un marcador que ha definido en el documento.
Hay un par de formas de abordar este problema. Si el objetivo es simplemente incluir cualquiera que sea el contenido actual del archivo de texto, entonces no necesitará una macro; simplemente use el campo INCLUDETEXT para hacer referencia al archivo que desea incluir. Cada vez que actualiza los campos en su documento, Word sale y toma el contenido actual del archivo de texto y lo incluye en su documento.
Sin embargo, si desea agregar continuamente el contenido actual del archivo de texto a su documento, deberá usar una macro. Un enfoque simple es utilizar el campo INCLUDETEXT dentro de la propia macro, de esta manera:
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 salta a la ubicación del marcador, inserta un campo INCLUDETEXT, selecciona el campo y luego lo desvincula. El resultado es que el contenido del archivo de texto se inserta en el documento. El propósito de desvincular el campo es, esencialmente, deshacerse del campo INCLUDETEXT, reemplazándolo con los resultados de ese campo (el contenido del archivo).
Para usar la macro, simplemente cambie el código para reflejar el nombre del marcador y la ruta completa al archivo de texto que desea insertar. Además, asegúrese de utilizar barras invertidas dobles dentro de la especificación de la ruta; esto es necesario para que el código de campo funcione correctamente.
Otro enfoque es renunciar al campo INCLUDETEXT por completo y simplemente insertar el contenido del archivo. La siguiente versión de la macro hace precisamente eso:
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 la existencia del marcador llamado mybmk (puede y debe cambiar esto) y luego usa el método InsertFile para insertar el contenido del archivo. Debe darse cuenta de que, tal como está escrito, la macro sobrescribirá el marcador. Si desea asegurarse de que el marcador permanezca intacto, deberá agregar una línea de código para contraer el marcador a su punto final, justo antes de insertar el archivo:
Selection.Collapse Direction:=wdCollapseEnd
Su macro puede ser tan elegante como desee, por supuesto. El siguiente ejemplo muestra una macro con más funciones que le da la opción de especificar cuánto espacio dejar entre el marcador y el contenido del archivo que desea insertar. Todo lo que necesita hacer es asegurarse de ajustar la macro en los puntos (1), (2) y (3) para reflejar cómo desea que funcione. (Los comentarios de la macro explican cuáles son las expectativas y las opciones).
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: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de textos más popular del mundo). Este consejo (12193) se aplica a Microsoft Word 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Word (Word 2007 y más tarde) aquí:
link: / wordribbon-Importing_a_Text_File_and_Inserting_after_a_Bookmark [Importación de un archivo de texto e inserción después de un marcador]
.