Importation d’un fichier texte et insertion après un signet (Microsoft Word)
James a un programme, externe à Word, qui crée automatiquement un petit fichier texte sur une base régulière. (Le fichier texte a toujours le même nom.) James pense que ce serait bien d’avoir une macro qui pourrait importer le fichier texte dans un document Word et l’insérer juste après un signet qu’il a défini dans le document.
Vous pouvez aborder ce problème de plusieurs manières. Si l’objectif est simplement d’inclure quel que soit le contenu actuel du fichier texte, vous n’aurez pas besoin d’une macro – utilisez simplement le champ INCLUDETEXT pour référencer le fichier que vous souhaitez inclure. Chaque fois que vous mettez à jour les champs de votre document, Word sort et saisit le contenu actuel du fichier texte et l’inclut dans votre document.
Si, toutefois, vous souhaitez ajouter continuellement le contenu actuel du fichier texte à votre document, vous devrez utiliser une macro. Une approche simple consiste à utiliser le champ INCLUDETEXT dans la macro elle-même, de cette manière:
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 saute à l’emplacement du signet, insère un champ INCLUDETEXT, sélectionne le champ et le dissocie. Le résultat est que le contenu du fichier texte est inséré dans le document. Le but de la dissociation du champ est, essentiellement, de se débarrasser du champ INCLUDETEXT, en le remplaçant par les résultats de ce champ (le contenu du fichier).
Pour utiliser la macro, modifiez simplement le code pour refléter le nom du signet et le chemin d’accès complet au fichier texte que vous souhaitez insérer. Assurez-vous également d’utiliser des doubles barres obliques inverses dans la spécification du chemin; ceci est nécessaire pour que le code de champ fonctionne correctement.
Une autre approche consiste à renoncer complètement au champ INCLUDETEXT et à insérer simplement le contenu du fichier. C’est exactement ce que fait la version suivante de la macro:
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 vérifie l’existence du signet nommé mybmk (vous pouvez et devez modifier cela), puis utilise la méthode InsertFile pour insérer le contenu du fichier. Vous devez vous rendre compte que, comme écrit, la macro écrasera le signet. Si vous voulez vous assurer que le signet reste intact, vous devrez ajouter une ligne de code pour réduire le signet à son extrémité, juste avant d’insérer le fichier:
Selection.Collapse Direction:=wdCollapseEnd
Votre macro peut être aussi sophistiquée que vous le souhaitez, bien sûr. L’exemple suivant montre une macro plus complète qui vous donne la possibilité de spécifier l’espace à mettre entre le signet et le contenu du fichier que vous souhaitez insérer. Tout ce que vous avez à faire est de vous assurer d’ajuster la macro aux points (1), (2) et (3) pour refléter la manière dont vous souhaitez qu’elle fonctionne. (Les commentaires dans la macro expliquent quelles sont les attentes et les options.)
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
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
WordTips est votre source pour une formation Microsoft Word rentable.
(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (12193) s’applique à Microsoft Word 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban de Word (Word 2007 et plus tard) ici:
link: / wordribbon-Importing_a_Text_File_and_Inserting_after_a_Bookmark [Importation d’un fichier texte et insertion après un signet]
.