Importere en tekstfil og sette inn etter et bokmerke

June 8  by Eliza

James har et program, ekstern til Word, som automatisk oppretter en liten tekstfil på en jevnlig basis. (Teksten filen har alltid samme navn.) James tror det ville være fint å ha en makro som kan importere tekstfilen inn i et Word-dokument og sette det rett etter et bokmerke han har definert i dokumentet.

Det er et par måter du kan nærme seg dette problemet. Hvis målet er å bare inkludere hva det gjeldende innholdet i tekstfilen er, så ville du ikke trenger et makro-bare bruke INCLUDE feltet for å referere til filen du vil ha med. Hver gang du oppdaterer feltene i dokumentet, går Word ut og griper det gjeldende innholdet i tekstfilen og inkluderer det i dokumentet.

Hvis, derimot, ønsker du å kontinuerlig legge til det gjeldende innholdet i tekstfilen i dokumentet, så må du bruke en makro. En enkel metode er å bruke INCLUDE felt innenfor makro seg selv, på denne måte:

Sub InsertTextFileAfterBookmark1 ()
Med markering
.GoTo Hva: = wdGoToBookmark, Navn: = "mybmk"
.Fields.Add Range: = Selection.Range, _
Type: = wdFieldIncludeText, Tekst: = "c: \\ myfile.txt \ c" _
& Chr (32) og "klartekst" & Chr (32) & ""
.MoveLeft, En
.Fields.Unlink
.MoveEnd
Avslutt med
End Sub

Makroen hopper til plasseringen av bokmerket, setter en INCLUDE felt, velger feltet, og deretter unlinks det. Resultatet er at innholdet i tekstfilen er satt inn i dokumentet. Formålet med frakobling feltet er å, i hovedsak, bli kvitt den INCLUDE feltet, og erstatte det med resultatene av det feltet (filinnholdet).

Å bruke makroen, rett og slett endre koden for å gjenspeile navnet på bokmerket og den fullstendige banen til tekstfilen du vil sette inn. Sørg også for at du bruker doble omvendt skråstrek innenfor banen spesifikasjon; Dette er nødvendig for feltkoden skal fungere skikkelig.

En annen tilnærming er å uten INCLUDE feltet helt og bare å sette innholdet i filen. Følgende versjon av makroen gjør nettopp det:

Sub InsertTextFileAfterBookmark2 ()
Hvis ActiveDocument.Bookmarks.Exists ("mybmk") = True Deretter
ActiveDocument.Bookmarks ("mybmk"). Velg
Selection.InsertFile Filename: = "c: \ myfile.txt"
Else
MsgBox "bokmerke" "mybmk" "finnes ikke!"
End If
End Sub

De makro sjekker om det finnes på bokmerket som heter mybmk (du kan og bør endre dette), og deretter bruker InsertFile metode for å sette inn innholdet i filen. Du bør innse at, som skrevet, vil makroen skrive bokmerket. Hvis du vil være sikker på at bokmerket er fortsatt intakt, så du må legge til en linje med kode for å kollapse bokmerket til sitt endepunkt, like før du setter filen:

Selection.Collapse Regi: = wdCollapseEnd

Makroen kan være så fancy som du ønsker det, selvfølgelig. Følgende eksempel viser en mer fullverdig makro som gir deg muligheten til å spesifisere hvor mye plass til å sette mellom bokmerket og filinnholdet du vil sette inn. Alt du trenger å gjøre er å sørge for at du justerer makro i punktene (1), (2) og (3) for å gjenspeile hvordan du vil at den skal fungere. (Kommentarene i makro forklare hva de forventninger og alternativene er.)

Sub InsertTextFileAfterBookmark3 ()
'Denne makroen leser innholdet i en spesifisert tekstfil
'Og setter inn tekst etter et bestemt bokmerke i
'Det aktive dokumentet.

Dim InsertSpacer As Integer
Dim FileContent As String

'(1) Velg et tall å sette inn noe mellom
"Bokmerke og satt inn tekst som Avstand:
'0 = Ingen plass. Teksten settes umiddelbart
"Etter bokmerket
'1 = Sett inn ett mellomrom mellom bokmerke og tekst
'2 = Sett avsnittsmerke mellom bokmerke og tekst
'3 = Sett 2 avsnittsmerker mellom bokmerke
'Og tekst

InsertSpacer = 1

'(2) Sett en konstant for navnet på filen du vil importere.
'Endre filnavnet inne sitatene nedenfor for å
'Den fullstendige banen og filnavnet på tekstfilen til
'Import:

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

'(3) Endre filnavnet i sitatene nedenfor til
'Navn på bokmerket etter som du vil
'Sette inn teksten:

Const BookmarkName As String = "mybmk"

"Håndter feil
On Error GoTo Oops

"Åpne og grip innholdet av filen
Åpen tekstfil For Input Som # 1
FileContent = Inngang (LOF (1), # 1)
Lukk # 1

'Finn bokmerket i det aktive dokumentet
Selection.GoTo Hva: = wdGoToBookmark, Navn: = "MyBookmark"

"Flytt markøren til slutten av bokmerket
Selection.MoveRight Enhet: = wdCharacter, Count: = 1

Velg sak InsertSpacer
Case 0
«Tror ingenting. Tekst satt inn umiddelbart
Tilfelle 1
«Sette inn et mellomrom
Selection.TypeText Tekst: = ""
Tilfelle 2
'Sett inn en avsnittsmerke
Selection.TypeText Tekst: = vbCrLf
Sak 3
'Sett to avsnittsmerker
Selection.TypeText Tekst: = vbCrLf & vbCrLf
End Select

'Sett tekstfilen:
Selection.TypeText Tekst: = FileContent
Exit Sub

Oops:
Velg sak err.number
Sak 55 'File allerede åpen
«Lukk filen
Lukk # 1
"Prøv igjen
CV
Sak 53 'File not found
NotFound = "Kunne ikke finne filen som heter:" _
& Chr (34) og tekstfil & Chr (34) og vbCrLf _
& VbCrLf & "Kontroller filnavnet og banen" _
& "I makrokoden etter" _
& Chr (34) & "Const tekstfil As String =" & Chr (34)
MsgBox NotFound, vbOKOnly
Tilfellet Else
MsgBox "Feil nummer:" & err.number & "," _
& Err.Description, vbOKOnly
End Select
End Sub

WordTips er din kilde for kostnadseffektiv Microsoft Word trening. (Microsoft Word er den mest populære tekstbehandlingsprogrammet i verden.) Dette tipset (12193) gjelder for Microsoft Word 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Word (Word 2007 og senere) her: Importere en tekstfil og sette etter et bokmerke.