Een tekstbestand importeren en invoegen na een bladwijzer

James heeft een programma, extern naar Word, dat automatisch een klein tekstbestand op een regelmatige basis. (De tekst bestand heeft altijd dezelfde naam.) James denkt dat het leuk zou zijn om een ​​macro die het tekstbestand in een Word-document kon importeren en voeg deze direct na een bladwijzer hij heeft gedefinieerd in het document.

Er zijn een paar manieren waarop je kunt dit probleem aan te pakken. Als het doel is om gewoon onder meer wat de huidige inhoud van het tekstbestand zijn, dan zou je geen behoefte aan een macro-gebruik gewoon het veld INCLUDETEXT om te verwijzen naar het bestand dat u wilt opnemen. Elke keer dat u de velden in uw document bij te werken, Woord gaat uit en grijpt de huidige inhoud van het tekstbestand en omvat het in uw document.

Als u echter wilt voortdurend voeg de huidige inhoud van het tekstbestand aan uw document, dan zul je nodig hebt om een ​​macro te gebruiken. Een eenvoudige benadering is het veld INCLUDETEXT gebruik in de macro zelf op deze wijze:

Sub InsertTextFileAfterBookmark1 ()
Met Selection
.GoTo Wat: = wdGoToBookmark, Name: = "mybmk"
.Fields.Add Range: = Selection.Range, _
Type: = wdFieldIncludeText, Tekst: = "c: \\ myfile.txt \ c" _
& Chr (32) & "platte tekst" & Chr (32) & ""
.MoveLeft, 1
.Fields.Unlink
.MoveEnd
End With
End Sub

De macro springt naar de locatie van de bladwijzer, voegt een INCLUDETEXT veld, selecteert het veld, en ontkoppelt het dan. Het resultaat is dat de inhoud van het tekstbestand in het document ingevoegd. Het doel van het ontkoppelen van het veld is om, in wezen, zich te ontdoen van het veld INCLUDETEXT, te vervangen door de resultaten van dat veld (de inhoud van het bestand).

Om de macro te gebruiken, gewoon de code om de naam van de bladwijzer en het volledige pad naar het tekstbestand dat u wilt invoegen te reflecteren. Ook, zorg ervoor dat je dubbele backslashes binnen het pad specificatie te gebruiken; dit vereist bij code goed te laten werken.

Een andere benadering is het veld INCLUDETEXT geheel afzien en plaatst de inhoud van het bestand. De volgende versie van de macro doet precies dat:

Sub InsertTextFileAfterBookmark2 ()
Als ActiveDocument.Bookmarks.Exists ("mybmk") = True Dan
ActiveDocument.Bookmarks ("mybmk"). Selecteer
Selection.InsertFile FileName: = "c: \ myfile.txt"
Anders
MsgBox "Bookmark" "mybmk" "bestaat niet!"
End If
End Sub

De macro controleert voor het bestaan ​​van de bladwijzer met de naam mybmk (je kan en moet dit veranderen) en gebruikt vervolgens de InsertFile methode om de inhoud van het bestand in te voegen. U moet zich realiseren dat, zoals geschreven, wordt de macro de bladwijzer te overschrijven. Als u ervoor wilt zorgen dat de bladwijzer intact blijft, dan zul je nodig hebt om een ​​regel code toe te voegen aan de bladwijzer instorten haar eindpunt, net voor het plaatsen van het bestand:

Selection.Collapse Richting: = wdCollapseEnd

Uw macro kan zo luxe als u dat wilt, natuurlijk. Het volgende voorbeeld toont een full-featured macro die u de mogelijkheid om te specificeren hoeveel ruimte om tussen de referentie en de inhoud van het bestand dat u wilt invoegen zetten geeft. Het enige wat u hoeft te doen is ervoor zorgen dat u de macro op punten aan te passen (1), (2) en (3) om na te denken hoe je het wilt bedienen. (De opmerkingen in de macro uit te leggen wat de verwachtingen en mogelijkheden zijn.)

Sub InsertTextFileAfterBookmark3 ()
Dit macro leest de inhoud van een opgegeven tekstbestand
En voegt de tekst na een bepaalde bladwijzer
'Het actieve document.

Dim InsertSpacer As Integer
Dim FileContent als Koord

"(1) Kies een nummer om iets tussen de voegen
'Bladwijzer en de ingevoegde tekst als afstand:
'0 = Geen ruimte. Tekst wordt direct geplaatst
'Na de bladwijzer
'1 = Plaats een ruimte tussen de referentie en tekst
'2 = Insert paragraaf cijfer tussen bladwijzer en tekst
'3 = Plaats 2 paragraaf merken tussen bladwijzer
'En de tekst

InsertSpacer = 1

'(2) Stel een constante voor de naam van het bestand dat u wilt importeren.
'Verander de naam van het bestand in de citaten hieronder om
'Het volledige pad en de bestandsnaam van het tekstbestand aan
'Import:

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

'(3) Verander de bestandsnaam in de onderstaande quotes om de
'Naam van de bladwijzer waarna u wilt
'Plaatst de tekst:

Const Bladwijzernaam As String = "mybmk"

'Behandel fouten
On Error GoTo Oops

'Open en pak de inhoud van het bestand
Open tekstbestand Voor Input Zoals # 1
FileContent = Input (LOF (1), # 1)
Sluiten # 1

'Zoek de bladwijzer in het actieve document
Selection.GoTo Wat: = wdGoToBookmark, Name: = "MyBookmark"

'Beweeg de cursor naar het einde van de bladwijzer
Selection.MoveRight Unit: = wdCharacter, Count: = 1

Selecteer Case InsertSpacer
Case 0
'Niets doen. Tekst onmiddellijk ingebracht
Case 1
'Een spatie invoegen
Selection.TypeText Tekst: = ""
Case 2
'Steek een paragraaf merk
Selection.TypeText Tekst: = vbCrLf
Case 3
'Plaats twee paragraaf merken
Selection.TypeText Tekst: = vbCrLf & vbCrLf
Einde Select

'Steek het tekstbestand:
Selection.TypeText Tekst: = FileContent
Exit Sub

Oops:
Selecteer Case Err.Number
Case 55 'File al open
'Sluit het bestand
Sluiten # 1
'Probeer opnieuw
Hervatten
Case 53 'Bestand niet gevonden
NotFound = "Kon het bestand niet vinden onder de naam:" _
& Chr (34) & TEXTFILE & Chr (34) & vbCrLf _
& VbCrLf & "Controleer de bestandsnaam en het pad" _
& "In de macro code na" _
& Chr (34) & "Const TEXTFILE As String =" & Chr (34)
MsgBox NotFound, vbOKOnly
Case Else
MsgBox "Fout nummer:" & Err.Number & "," _
& Err.Description, vbOKOnly
Einde Select
End Sub

WordTips is uw bron voor kosteneffectieve Microsoft Word training. (Microsoft Word is de meest populaire tekstverwerker in de wereld.) Deze tip (12.193) is van toepassing op Microsoft Word 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van het Woord (Word 2007 en later) hier: een tekstbestand en invoegen na een bladwijzer importeren.