Załóżmy, że chcemy dodać jakiś tekst na końcu dokumentu i od razu dostęp go jako Range
obiektu, dzięki czemu można ustawić pewne właściwości nim bez wpływając powyższy tekst . Idealnie, metoda zwraca obiekt Range, który byłby idealny do tego, ale tak nie jest.funkcja MS Word, aby dołączyć zakres do dokumentu
To mnie denerwuje, że Słowo musi wiedzieć doskonale, jaki zakres określa wynik wywołania InsertAfter
, ale na pierwszy rzut oka muszę go obliczyć "po fakcie" od długości wstawionego tekstu, lub w niektórych inny sposób.
Więc wymyśliłem proste podejście do pracy. W pseudo-kodzie (w rzeczywistości jest to Delphi kod ale mam nadzieję, że nie zniechęci odpowiedzi VBA), co mogę zrobić, to ten
ARange := Document.Range
ARange.Text := 'AAA'
AEnd := ARange.End - 1 // AEnd is an integer
ARange.SetRange(AEnd, AEnd)
ARange.Text := 'XXX'
ARange.Bold := True
i wydaje się, że mogę kontynuować w nieskończoność, dodając bloki tekstu do końca dokumentu przez powtórzenie drugiego bloku kodu.
Linia
ARange.SetRange(AEnd, AEnd)
jak rozumiem, wydaje się skonstruować nową serię na końcu istniejącego (w przeciwieństwie do wywoływania Collapse na istniejącej gamy), i działa dobrze dla prostych przypadków testowych Próbowałem. Ale zastanawiam się, czy nie mam gdzieś jakiejś sztuczki. Czy istnieje bardziej bezpośredni sposób dołączenia zakresu do dokumentu i uzyskania odniesienia do niego?
PS: Powinienem był być nieco jaśniejszy, próbuję to zrobić bez użycia obiektu Selection (z różnych powodów, w tym z faktu, że można mieć tylko jedną z nich w danej chwili).
Dzięki @KenWhite. Powinienem wspomnieć, że starałem się unikać selekcji ze względu na niedawną wypowiedź Cindy Meister (która wydaje się być specjalistką i ekspertem w dziedzinie programu Word). – MartynA