Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Word 2003 wstawianie tekstu do tekstu

Lars_Likon 17 Paź 2013 18:27 2676 15
  • #1 17 Paź 2013 18:27
    Lars_Likon
    Poziom 6  

    Czy jest jakaś funkcja w Wordzie która wstawiałaby do dłuższego tekstu wyrazy napisane w kolumnie. Np.

    Tomaszu
    Rzeszów

    Panie [imię], pan się nie boi, całe miasto [nazwa miasta] za panem stoi.

    coś na wzór korespondencji seryjnej, ale z poziomu tekstu w dokumencie.

    0 15
  • #3 17 Paź 2013 21:21
    Lars_Likon
    Poziom 6  

    Ponieważ program w którym pracuje może wygenerować mi tylko dane w takiej postaci, tekstu (nie tabeli).

    Mówiąc ogólnie mam ponad sto wzorów pism, które na co dzień uzupełniam zmiennymi danym (tj. imię, nazwisko, data i miejsce urodzenia, data i sygnatura sprawy i kilka innych) ręcznie.

    Pracuję w programie, który ma możliwość wygenerowania tych zmiennych do pliku Word 2003. Mam tam też możliwość stworzenia tych wzorów w programie wstawiając te zmienne i wygląda to podobnie jak korespondencja seryjna, a następnie wygenerowania pisma do Word, ale po pierwsze wstawianie zmiennych jest trudniejsze niż w korespondencji seryjnej w Word, po drugie tak wygenerowane pisma do Word nie są zbyt ładne (gubią formatowanie, czasem rozmiar czcionki). Po trzecie stworzenie tylu wzorów zajęłoby mi mnóstwo czasu, a tego nie mam zbyt wiele.

    Wpadłem więc na pomysł, żeby połączyć program i moje wzory. A mianowicie. W programie stworzyć jeden wzór pisma, który generowałby mi do Worda potrzebne zmienne, najlepiej w kolumnie.

    Następnie wkleiłbym (do Worda) jeden z moich wzorów z polami, które ściągałyby mi dane wygenerowane z programu (z kolumny ze zmiennymi).
    Tylko nie wiem właśnie jak to zrobić.

    0
  • #5 17 Paź 2013 22:19
    Lars_Likon
    Poziom 6  

    Problem w tym, że mamy dostęp tylko do Worda 2003.

    0
  • #6 17 Paź 2013 23:47
    JRV
    Specjalista - VBA, Excel

    Word również może importować z plików tekstowych (txt, CSV)
    powinno być wersz nagłówków. Jeśli wszystkie zmienne w jednej kolumnie, a następnie w Worde możesz podzielić się pola 'NEXT'
    Przepraszam za złe gramatyki to tłumaczenie maszynowe

    0
  • #7 20 Paź 2013 14:16
    Lars_Likon
    Poziom 6  

    Dziękuje wam za dotychczasowe podpowiedzi.

    Wymyśliłem jeszcze jeden sposób: wszechmocne MARKA.
    Będę jednak potrzebował waszej pomocy w stworzeniu odpowiedniego kodu.

    Przykład:

    (1)ciotka
    (2)Danuta
    (3)swetry
    (4)zielone

    "Gruba (1) (2)
    Robi (3) na drutach.
    Już po pięciu minutach
    Dowiedziały się o tym jaskółki,
    Gwałt podniosły do spółki:
    "Jak to? (1) (2)
    Robi (3) na drutach?
    Na drutach siadają ptaki,
    Lecz (1)? Skąd pomysł taki?
    A lećcież do niej gromadnie,
    Bo wam (1) z drutów spadnie!"

    Pomysł jest prosty, ale pewnie tylko w zamyśle. Makro działałoby tak:
    Ctrl + Home; [ustawienie kursora na początek strony]
    Szukaj: "(1)"; [wyszukiwanie (1) znajdującej się powyżej tekstu - w kolumnie]
    Esc; [schowanie opcji wyszukiwania]
    ->; [przesunięcie kursora za (1)]
    Ctrl+Shift+ -> [zaznaczenie wyrazu do kopiowania]
    Ctrl+C [skopiowanie zaznaczonego tekstu, w przykładzie "ciotka"]
    ->; [przesunięcie kursora za "ciotka"]
    Szukaj: "(1)"; [wyszukiwanie (1) znajdującej się w tekście]
    Esc; [schowanie opcji wyszukiwania]
    Ctrl+V (wklejenie wyrazu "ciotka" w miejsce (1) w tekście]

    Tu mam pierwszy problem, w tekście słowo "ciotka" występuje 4x, a "Danuta" 2x.
    Jak napisać makro które będzie wyszukiwało (1) do końca, aż zamieni wszystkie?

    Dalej makro by się zaczynało od początku, czyli:

    Ctrl + Home; [ustawienie kursora na początek strony]
    Szukaj: "(2)"; [wyszukiwanie (2) znajdującej się powyżej tekstu - w kolumnie]
    Esc; [schowanie opcji wyszukiwania]
    ->; [przesunięcie kursora za (2)]
    Ctrl+Shift+ -> [zaznaczenie wyrazu do kopiowania]
    Ctrl+C [skopiowanie zaznaczonego tekstu, w przykładzie "Danuta"]
    itd.

    Pojawia się następny problem, w tekście nie zawsze będą potrzebne wszystkie dane z kolumny, w przykładzie podałem (4)zielony. Tego nie ma w tekście, jak napisać makro które w takim przypadku zakończy wyszukiwanie i przejdzie do wyszukiwania następnego wyrazu do zamiany.

    0
  • #8 20 Paź 2013 19:44
    JRV
    Specjalista - VBA, Excel

    ten wzor (o ciotke) je w Wordu ?
    Jeśli tak, i danye w oddzielnych kolumnach, to nie ma problemu

    może nie przedstawim dokładnie to, czego potrzebujesz
    Rozpakuj do d:\
    ciotki.txt tylko na D:\
    ciotki.doc gdziekolwiek

    0
  • #9 24 Paź 2013 21:43
    Lars_Likon
    Poziom 6  

    Dziękuje, tak, ale nie całkiem o to mi chodziło.

    [1]ciotka
    [2]Danuta
    [3]swetry
    [4]zielone

    "Gruba (1) (2)
    Robi (3) na drutach.
    Już po pięciu minutach
    Dowiedziały się o tym jaskółki,
    Gwałt podniosły do spółki:
    "Jak to? (1) (2)
    Robi (3) na drutach?
    Na drutach siadają ptaki,
    Lecz (1)? Skąd pomysł taki?
    A lećcież do niej gromadnie,
    Bo wam (1) z drutów spadnie!"

    Kod: vba
    Zaloguj się, aby zobaczyć kod


    Powyższe makro prezentuje jak to makro miałoby funkcjonować. Dołączam również plik (Word 2003).
    Przed wyrazami w kolumnie zapisane są liczby w nawiasach [], unikam w ten sposób ich wyszukanie i zamiany.

    Stworzone przeze mnie makro jest złe. Zrobiłem je za pomocą rejestratora. Krok po kroku jak opisałem 7 poście tego tematu.

    Zawiera wady opisane w 7 poście, czyli: wyszukałem i zamieniłem tyle wyrazów ile jest w tekście. Zrobiłem to "ręcznie".

    Dowiedziałem się w internecie, że można ten problem rozwiązać za pomocą pętli. W tym przypadku chyba właściwa będzie Do While, jednak nie wiem gdzie ją umieścić.

    Wpadłem też na pomysł, żeby zamiast kolejnego wyszukiwania i wstawiania przez makro wyrazów za zmienne (1) (2) ... użyć opcji Znajdź -> Zamień -> Zamień wszystko. Umieszczony przeze mnie wierszyk jest króciutki a makro dość obszerne. Myślę, że skróciłoby to długość makra, ale nie mam pojęcia czy jest to możliwe i jak to wykonać.

    0
  • #10 24 Paź 2013 23:07
    adamas_nt
    Moderator Programowanie

    Spróbuj

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Należałoby tylko spowodować, żeby makro uzupełniało brakujące spacje, zmieniało na początku zdania litery na wielkie, itp. Ale zostawiam to na deser...

    0
  • #11 25 Paź 2013 21:19
    JRV
    Specjalista - VBA, Excel

    Witam
    Jeżeli numeracja w [ ... ] idzie w porządku, sugerują takiej opcji

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #12 26 Paź 2013 14:03
    Lars_Likon
    Poziom 6  

    Tak! To jest to o co mi chodziło! Dziękuje.

    Pozostaje jedna kwestia.

    Czy można zmienić ten kod w ten sposób, żeby zamiast jednego wyrazu wstawiane było więcej wyrazów (tyle wyrazów ile jest w wierszu za [...])

    Np.

    Zamiast:
    [1]ciotka
    [2]Danuta

    wpisać:
    [1]ciotka Danuta

    A zamiast:
    [3]swetry
    [4]zielone

    [2]zielone cieplutkie swetry

    I wtedy:
    [1]ciotka Danuta
    [2]zielone cieplutkie swetry

    "Gruba (1)
    Robi (2) na drutach.
    Już po pięciu minutach
    Dowiedziały się o tym jaskółki,
    Gwałt podniosły do spółki:
    "Jak to? (1)
    Robi (3) na drutach?
    Na drutach siadają ptaki,
    Lecz (1)? Skąd pomysł taki?
    A lećcież do niej gromadnie,
    Bo wam (1) z drutów spadnie!"

    0
  • #14 26 Paź 2013 15:15
    Lars_Likon
    Poziom 6  

    Czy mógłby Pan umieścić to makro tu na forum?

    Podczas próby odtworzenia makro o nazwie "petla" wyskakuje mi komunikat:
    "The macros in this project are disabled. Please refer to the online help or documentation of the host application to determine how to enable macros."

    0
  • Pomocny post
    #15 26 Paź 2013 15:27
    JRV
    Specjalista - VBA, Excel

    Poproś kogoś od obywateli, aby wykazać, jak włączyć makro
    trochę się obawiam, że nie jestem w stanie wytłumaczyć z mojej gramatyki
    w menu Narzędzia - makro - zabezpieczenie niedźwiedź średnia - Pan zdecydowała, czy umożliwić działanie makra

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #16 26 Paź 2013 15:31
    Lars_Likon
    Poziom 6  

    Działa Wspaniale! Wielkie Dzięki!

    0