Legge Smarte anførselstegn gjennom Makro tekst

July 28  by Eliza

Mary bruker makroer mye å legge til tekst til hennes dokumenter. Problemet er at hvis den ekstra teksten inneholder apostrofer, de som er lagt til tekst som "straight" heller enn "smart". Hun viser at hun har Autoformat som du skriver sette på plass som forteller Word til å bruke smarte anførselstegn i stedet for rette sitater, men det har ingen innvirkning på teksten satt inn av mine makroer.

Når du setter inn tekst i et dokument ved hjelp av en makro i stedet for å skrive, er teksten i hver sak behandlet annerledes av Word. Tekst som du skriver blir behandlet som hvert tegn er angitt. Tekst som er satt av en makro er behandlet mer som tekst som er limt inn i et dokument. Dermed, hvis du skriver "dette er min tekst," Word gjør sin behandling etter hver karakter. Det betyr at det er tid for programmet å sjekke AutoFormatting og autokorrektur og resten av de tingene som Word gjør for å behandle tekst.

Når du bruker en makro til å gå inn den samme teksten, blir det satt som en blokk, som om du limt den på plass. Dette betyr at eventuelle tegn i midten av teksten (slik som sitater eller apostrofer) som ville ha blitt behandlet av AutoFormatting ikke blir "fanget" og behandlet. Dette betyr at rette anførselstegn ikke er endret til smarte anførselstegn hvis de er inne i teksten som er satt av makroen.

Det er et par måter du kan nærme en løsning på dette. Den første er å få makro, etter at den setter all teksten, gjør en finne og erstatte operasjon for å erstatte alle sitater med anførselstegn og apostrofer med apostrofer. Dette høres kanskje rart ut, men hvis du har Autoformat som du skriver satt til å bruke smarte anførselstegn, vil finne og erstatte operasjon ende opp med å endre de rette anførselstegn til smarte anførselstegn.

Denne tilnærmingen er veien å gå hvis makroen satt inn mye tekst i dokumentet. Hvis det er å sette inn mindre biter av tekst, så er det lettere å være sikker på at makroen sette inn de riktige ASCII-koder for smarte anførselstegn for å begynne med. ASCII-koder for et vanlig sitat er 34, men en smart åpning sitat har etiske 147 og en avsluttende sitat er 148. Det finnes liknende forskjeller i kodene som brukes for apostrofer. Hvis du bruker Chr funksjon for å sette riktig karakter, vil du alltid ha sitatene du ønsker.

En måte å gjøre det på er å bruke kode som ligner på følgende i begynnelsen av makroen:

Hvis Options.AutoFormatAsYouTypeReplaceQuotes = True Deretter
sAposOpen = Chr (145)
sAposClose = Chr (146)
sQuoteOpen = Chr (147)
sQuoteClose = Chr (148)
Else
sAposOpen = Chr (39)
sAposClose = Chr (39)
sQuoteOpen = Chr (34)
sQuoteClose = Chr (34)
End If

Denne koden kontrollerer om Autoformat mens du skriver innstillingen er slått på for smarte anførselstegn. Hvis det er, så de fire variablene er satt til riktig ASCII-koder for smarte anførselstegn. Hvis det ikke er slått på, deretter variablene er satt til de riktige kodene for rette anførselstegn. Du kan senere bruke disse variablene i makroen som du montere og sette inn tekst. For eksempel, hvis du ønsker å sette inn teksten "min brors hus er nede i gaten," du kan sette det på denne måten:

sMyString = "min bror" & sAposClose & "s huset er nede i gata"
Selection.InsertAfter "" & sMyString

Hvis du finner denne tilnærmingen plagsom (bryte opp dine strenger på denne måten), så er det en annen mulighet. Du kan lage din egen funksjon som gjør de riktige utskiftninger i strengene på en gang. Følgende par av makroer vil gjøre jobben bra:

Funksjons RepQuotes (sRAW As String) As String
Dim STEMP As String
Dim sAposOpen As String
Dim sAposClose As String
Dim sQuoteOpen As String
Dim sQuoteClose As String

Hvis Options.AutoFormatAsYouTypeReplaceQuotes = True Deretter
sAposOpen = Chr (145)
sAposClose = Chr (146)
sQuoteOpen = Chr (147)
sQuoteClose = Chr (148)
Else
sAposOpen = Chr (39)
sAposClose = Chr (39)
sQuoteOpen = Chr (34)
sQuoteClose = Chr (34)
End If

STEMP = RepText (sRAW, "" & Chr (39), sAposOpen)
STEMP = RepText (STEMP, Chr (39), sAposClose)
STEMP = RepText (STEMP "," & Chr (34), sQuoteOpen)
STEMP = RepText (STEMP, Chr (34), sQuoteClose)
RepQuotes = STEMP
End Function

Funksjon RepText (SIN As String, sFind As String, SREP As String) As String
Dim x As Integer

x = InStr (SiN, sFind)
y = 1
Mens x> 0
SiN = Left (synd, x - 1) og SREP & Mid (synd, x + Len (sFind))
y = x + Len (SREP)
x = InStr (y, synd, sFind)
Wend
RepText = sin
End Function

Hva du gjør er å konstruere dine tekststrenger som normalt, og deretter sende dem gjennom RepQuotes makro. Bestemmer makro de riktige sitater å bruke og gjør konverteringer da. Det avgjør om et sitat er en åpning sitat eller slutter sitat i teksten ved om det er en plass før sitatet eller ikke. Hvis det er det, er det antatt å være en åpning sitat; hvis ikke, så det er en avsluttende sitat.

WordTips er din kilde for kostnadseffektiv Microsoft Word trening. (Microsoft Word er den mest populære tekstbehandlingsprogrammet i verden.) Dette tipset (3363) 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: Legge Smarte anførselstegn gjennom Makro tekst.