Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[Word] szukanie specjalnie oznaczonych elementów tekstu



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Judykator



Dołączył: 28 Wrz 2007
Posty: 63

PostWysłany: Pią Lis 22, 2019 5:54 pm  OP    Temat postu: [Word] szukanie specjalnie oznaczonych elementów tekstu Odpowiedz z cytatem Pisownia

Mam makro które szuka tekstu ograniczonego znakami {} np. {tekst}
Kod:

Sub ZnajdzPole()
'
' ZnajdzPole Makro
' Poszukiwania {pola edycji}
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "\{?*\}"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
    End With
End Sub



Generalnie dzia?a, za wyj?tkiem tego ?e nie znajduje obszaru oznaczonego tymi nawiasami je?li w ?rodku znajduje si? pole programu word (konkretnie u?ywam pola CreateDate).

Czy da?oby si? to makro przerobi? by równie? chwyta?o te pola ? To po pierwsze.
A po drugie by?by zainteresowany tym by makro wyszukiwa?o i zaznaczy?o nie tylko obszary oznaczone {} ale równie? obszary zaznaczone znakiem |

Jak zmieni? ci?g "\{?*\}" by wyszukiwa? albo obszar {} albo obszar || wzgl?dnie {| lub |}

A mo?ne kto? zaproponuje mi jakie? alternatywne rozwi?zanie ? Chodzi o znalezienie i zaznaczenie obszaru tekstu o nie wiadomej d?ugo?ci oznaczonego znakami {} lub || najlepiej uwzgl?dniaj?cego ?e niekiedy w ?rodku obszaru b?dzie pole createdate lub inne pole.

Mog? prosi? o pomoc?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7930

PostWysłany: Pią Lis 22, 2019 8:23 pm      Temat postu: Odpowiedz z cytatem Pisownia

Czy mog? prosi? o za??cznik z takim przyk?adem?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Judykator



Dołączył: 28 Wrz 2007
Posty: 63

PostWysłany: Pią Lis 22, 2019 8:34 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

To dowolny tekst w Wordzie - mo?na go skopiowa? do worda np.

Cytat:
{Powiem szczerze, ?e ja ludzi z Ukrainy rozumiem i szanuj?.} Bo ja pami?tam czasy, jak sam je?dzi?em na zachód handlowa? towarem. By?o to na pocz?tku lat 90. Jecha?o si? na bazar ze sprz?tem najcz??ciej kupowanym w Rosji oraz po cichu z cygaretami. By zarobi? te 200-300 marek. Potem kupowa?o si? magiczn? chemi? z Niemiec w Aldi i rozprowadza?o po znajomych. Ch?tnych nigdy nie brakowa?o, a wr?cz tworzy?y si? zapisy na kolejne dostawy. I w ten sposób wpada?o kolejne {50 marek, czyli mo?na by?o wyszarpa? 350 marek, odliczaj?c koszty podró?y.}

Niby teraz suma ?mieszy, ale wtedy by?a to | równowarto?? miesi?cznej pensji. | Po czterech wyjazdach w miesi?cu mo?na by?o ?y?. Po roku takich wyjazdów kupowa?o si? mieszkanie spó?dzielcze na w?asno??. W?ród rodaków uchodzi?o si? za osob? przedsi?biorcz?, bogat? i ?wiatow?. Tak?, co na zachodzie by?a. Potem zacz??o si? przywo?enie samochodów z zachodu, ale to by? ju? inny poziom wtajemniczenia. W samych Niemczech spotykali?my si? z u?miechem, ?yczliwo?ci?. Bo mieli?my na ichnim flumarkcie (Flohmarkt) rzeczy tej samej jako?ci co w sklepie, tylko za 1/3 ceny. {A najcz??ciej by? to sprz?t optyczny z jeszcze wtedy ZSRR.} Lornetki, lunetki, noktowizory, obiektywy do aparatów, ruskie gierki elektroniczne, modele samochodów, kawior. Sz?o wszystko, i to pi


Makro skacze po tekstach mi?dzy nawiasami { } i zaznacza je. Pierwszy uruchomienie {pierwszy znaleziony tekst}, kolejne uruchomienie {kolejny znaleziony tekst} - znajduje najbli?sze kursora, a potem nast?pne bo kursor si? przestawia. Na w/w tek?cie makro dzia?a i wyszukuje jako pierwszy (zak?adaj?c ?e kursor jest na pocz?tku) tekst "{Powiem szczerze, ?e ja ludzi z Ukrainy rozumiem i szanuj?.}" Chcia?bym by te? znajdowa?o tekst mi?dzy znakami | - w przyk?adzie "| równowarto?? miesi?cznej pensji. |"

Dla daty mam tak {2019-11-22} z tym ?e data to pole CreateDate i wtedy makro nie zaznacza "{2019-11-22}"

Mam takie pliki - szablony, jakby formularze gdzie pola do edycji s? w?a?nie zaznaczone {przyk?ad} i tym makrem sobie skacze mi?dzy tymi obszarami i albo wpisuje co? nowego albo zostawiam "standardowy/domy?lny" tekst tj. wpisany w szablonie jako najcz?stszy) w tych polach. Na koniec jak jestem zadowolony z edycji dokumentu to mam makro które usuwa pozosta?e nawiasy klamrowe i mam gotowy dokument.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Judykator



Dołączył: 28 Wrz 2007
Posty: 63

PostWysłany: Pią Lis 22, 2019 9:26 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Podpowiedziano mi cz??? rozwi?zania:

Kod:
.Text = "[\{|\|]?*[\}|\|]"


w sumie dzia?a.

Ch?tnie jeszcze chcia?bym rozwi?zanie by makro nie omija?o pól worda, np,. z dat?.

Ch?tnie jeszcze doda?bym do swojego makra polecenie cofaj?ce kursor od 2 znaki przed uruchomieniem
makra. Bo teraz przy tek?cie

Cytat:
Co? co? tam | jeden| dwa | trzy | cztery |.


Pierwsze uruchomienie zaznacza | jeden | a drugie uruchomienie | trzy | a wola?bym by zaznacza?o | dwa | Zapewne problem jest taki ?e po kolejnym uruchomieniu kursor jest za kresk? przed s?owem dwa.

Próbowa?em doda? na pocz?tku
Kod:
Selection.MoveLeft Unit:=wdCharacter, Count:=2


ale to po pierwszym zaznaczeniu zatrzymuje si? i nie chce przeskoczy? do kolejnego miejsca


Edit 2
na powy?szy problem te? znalaz?em rozwi?zanie, w drodze eksperymentów. Na pocz?tku doda?em:
Kod:
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1



Teraz jeszcze ta data.
Tak sobie pomy?la?em ?e skoro w sumie u?ywam zasadniczo tylko pola CreateDate to pomog?oby zapewne dodanie na pocz?tku mojego makra polecenia które przekszta?ca pole w zwyk? tekst b?d?cy zawarto?ci? tego pola.
Czyli algorytm na pocz?tku:
1. znajd? pole worda
2. odczytaj jego zawarto?? i zapami?taj
3. skasuj pole
4 w miejscu pola wstaw zapami?tan? warto??
5. powtórz to z wszystkimi polami

Tylko nie umiem tego algorytmu zaprogramowa? ...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Judykator



Dołączył: 28 Wrz 2007
Posty: 63

PostWysłany: Sob Lis 23, 2019 12:54 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Lekko od?wie?? temat. Dotychczasowe za?o?enia mniej wi?cej wype?ni?em, ale pomy?la?em ?e na moje potrzeby mog?oby by? lepiej.

Mam przyk?adowy tekst w Wordzie.

Cytat:
Inspirobot | to system sztucznej inteligencji zaprojektowany | z my?l? o szybkim generowaniu inspiruj?cych cytatów | i tworzeniu motywuj?cych obrazków|. Jak mu posz?o zadanie? | Có?... dane jakimi karmili go jego twórcy spowodowa?y, {?e jego twory troch? rozjecha?y si? z g?ówn? ide?}.


Mam te? makro:
Kod:

Sub ZnajdzPole()
'
' ZnajdzPole Makro
' Puszkiwania {pola edycji}
'
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.Find.ClearFormatting
    With Selection.Find
        '.Text = "\{?*\}"
        .Text = "[\{|\|]?*[\}|\|]"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
    End With
End Sub



Makro po uruchomieniu zaznacza najbli?szy obszar tekstu zaznaczony znakami || lub {}

Chcia?bym to makro ulepszy? w nast?puj?cy sposób
1. makro sprawdza czy jest ju? zaznaczony tekst ograniczony znakami {} lub ||
2a. je?li nie to dzia?a jak dotychczas czyli zaznacza najbli?szy mo?liwy tekst;
2b. je?li tak - tj. ju? zosta?o co? zaznaczone to nie trac?c dotychczasowego zaznaczenia rozszerza je do najbli?szego na prawo znaku | lub }

Czy móg?by mi kto? doradzi? jak to zrobi?? Zreszt? wystarczy?oby mi makro obejmuj?ce punkt 2b tj. nie trac?c dotychczasowego zaznaczenia rozszerza je do najbli?szego na prawo znaku | lub } Uruchamia?bym je odr?bnie.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.22487 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |