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.

VBA jako skaner w wordzie

annnaanna 09 Gru 2015 17:27 1581 20
  • #1 09 Gru 2015 17:27
    annnaanna
    Poziom 4  

    Witam. Szukam makra które działa jako "skaner" w wordzie. Każdy z nas dastało jakieś pismo z urzędu. W górynym lewym boku są znak sprawy, numer dokumentu, po środku tytuł pisma urzędowego. Interesowało by mnie takie makro w wordzie, które by szukał nastepujących słow: Znak sprawy(może być jeden numer sprawy lub więcej), numer dokumentu i tytuł dokumentu(np, zawiadomienie, decyzja, postanowienie itp). Po kliknieciu ma makro makro przeszukuje danych wartości jakie ma szukac i po znalezieniu umieszcza ja w pliku exela nazwijmy "dane". Czy jest taka możliowość? Nie znam na vba, prosze o pomoc.

    0 20
  • #2 09 Gru 2015 18:10
    arekkrasnal
    Poziom 20  

    Witam
    Proponuję zapoznać się z pozycją:
    Office 2007 Język VBA i makra-Paul McFedries

    0
  • #3 09 Gru 2015 18:16
    annnaanna
    Poziom 4  

    Dziekuję za pomoc, ale to zajmnie mi b.duzo czasu, którego nie mam. Chetnie zapoznam sie. Oczekiwała bym innej pomocy.

    0
  • #4 09 Gru 2015 18:36
    arekkrasnal
    Poziom 20  

    Raczej potrzeba makra dla excela które z wskazanego katalogu przejrzy pliki word i zwróci nazwę pliku jakiej tyczy się sprawy i tp.

    0
  • #5 10 Gru 2015 11:56
    kinggustav
    Poziom 20  

    Doprecyzujmy: pismo z urzędu jest zwykle na papierze, czy chcesz to zamienić na tekst w Wordzie? Jeżeli tak to temat jest bardzo trudny, są różne kulawe narzędzia (w samym VBA nie słyszałem), ale nie wiem czy wogóle da sie to zrobić.
    Jeżeli już mamy tekst to trzeba określić w jaki sposób znajdziemy każdy element, który nas interesuje. Jeżeli przy tym założymy, że numer jest w 1 wierszu, to jak będzie pierwszy pusty to nie znajdziemy. Algorytm musi więc być "inteligentny".
    Warto też pomyśleć o jakiejś walidacji, bo dane i tak będą niezbyt wysokiej jakości.

    0
  • #6 10 Gru 2015 14:42
    PRL
    Poziom 33  

    Do Autora.
    Potrzebujesz kombajn OCF+VBA.

    0
  • #7 10 Gru 2015 17:47
    annnaanna
    Poziom 4  

    Problem jest taki, że nie mozna dokładnie okreslić w ktorym wierszu znajduja szukane zwroty. Po znalezieniu określonych zwrotow, makro mialo by wyeksportwać dane do exela, do odpowienich komórek. jak można to zrobić?

    0
  • #8 10 Gru 2015 17:56
    marcinj12
    Poziom 40  

    Jaka wersja office? Jakie jest rozszerzenie tych plików word?
    Czy te wszystkie dokumenty mają ten sam format - możesz załączyć jakiś przykład?
    Samo rozpoznawanie np. rodzaju pisma po frazie kluczowej

    annnaanna napisał:
    np, zawiadomienie, decyzja, postanowienie itp
    nie zda rezultatu, jeśli wyraz wystąpi w treści dokumentu. Mogę np. wystosować do kolegi takie pismo:

    Cytat:
    ZAWIADOMIENIE

    Szanowny Kolego,
    Po wczorajszym spotkaniu zapadła decyzja, że idziemy na piwo.
    Powyższe postanowienie zostanie wdrożone w czyn w dniu 11.12 b.r. o godzinie 18-tej. Proszę o terminowe stawienie się na rynku o podanej godzinie.

    Z wyrazami szacunku...

    :)
    To oczywiście bardzo prosty przykład, jednak słowo "zawiadomienie" nie zawsze musi być pierwszym słowem - nad nim może być adres nadawcy, odbiorcy etc.

    Jeśli format będzie stały (pisma wg szablonu od jednego nadawcy), można próbować jakoś to rozgraniczyć, jeśli różny, to...

    0
  • #9 10 Gru 2015 18:44
    annnaanna
    Poziom 4  

    Jutro przygotuje wzory dokumentow, tak pisanie to nie ma sensu. Dziekuje za pomoc

    0
  • #10 11 Gru 2015 17:28
    annnaanna
    Poziom 4  

    Witam. Przygotowałam załączniki.

    W pracy mam WORD i EXEL 2007, mam mieć WORD i EXEL 2010. Przepraszam jeśli popełnie jakiś błąd.

    Chodzi mi o makro, które skanuje dokumenty. Powiedzmy mam dokument "wezwanie do braków formalnych1" makro skanuje(rozpoznaje) znak sprawy " 0111-2233-0111-00000001/15" datę "13-07-2015 " i rozpoznaje co to za dokument "Wezwanie dla braków formalnych". Po ze skanowaniu tego dokumentu i uzyskaniu danych, przenosi te dane do exela o nazwie "_DANE_" (zeszyt i akrusz mają taka sama nazwę).

    W "_DANE_" wyszkuje Znak sprawy "0111-2233-0111-00000001/15" i tytuł kolumny "wezwanie do braków formalnych" wstawia ze skanowane dane, czyli nr dokumentu "0111-00000011113/15" i datę "13-07-2015" w odpowiednie miesce.

    Znaków spraw może być maksymalnie na dokumentach: "wezwanie do braków formalnych" i dokumencie "Wezwanie do wyjaśnień" maksymalnie 5. Rzadko tak jest. Przeważnie bywa tylko 3.

    Decyzje zawsze mają jeden znak sprawy i jeden nr dokumentu, czyli prościej.

    Zakładając że mamy na dokumentach typu: "wezwanie do braków formalnych" i dokumencie "Wezwanie do wyjaśnień" liczbę znaków 2( np 0111-2233-0111-00000002/15 i 0111-22334-0111-00000001/15) numer dokumentu jest taki sam dla każdej z tych sprawy taki sam, makro umieszcza nr dokumentu w komórkach dla tych spraw i dla tego typu dokumentu w zeszycie exela"_DANE_". oczywiście po odnalezieniu tych znaków spraw i nazwy dokumentu.

    0
  • #11 11 Gru 2015 17:29
    annnaanna
    Poziom 4  

    Zrobiłam przykładowe dane w zeszycie exela"_DANE_". Nie wiedziałam, jak mam napisać znaki spraw. Czy jeden pod drugim, czy też obok siebie jak to zrobiłam. Bywa tak że dana maja od 1 do 5 znaków spraw. W zalezności od tego ile musi być spraw.

    Przepraszam jak zamieszałam. Nie miałam takiego zamiaru. Jaśniej nie umiałam wytłumaczyć.

    Jest szansa żeby makro takie działało? jesli tak to wtedy bedę mogła z pliku "_DANE_" eksportować dane do innych plików.

    Nie znam się na informatyce. Prosze o pomoc. Z góry ślicznie dziękuje.

    0
  • #12 11 Gru 2015 21:33
    adamas_nt
    Moderator Programowanie

    Postanowiłem potrenować szare komórki odrobinę ;)
    W załączniku folder "ćwiczebny" (należy rozpakować i zapisać na dysku/pulpicie). Do działania makra potrzebne są referencje "Microsoft Word x.xx Object Library" (w załączonym pliku włączone).

    W przykładzie wyekstrahowanie Nr dokumentu i daty. Z pozostałymi parametrami można podobnie. Pozostaje jedynie odszukanie wiersza i kolumny w pliku docelowym.

    Jest jeszcze kwestia tytułu (nazwy dokumentu). Jeśli ostatnim wierszem przed jego wystąpieniem jest, wcześniej niewystępujący, kod pocztowy (spacja & dwie cyfry & myślnik & trzy cyfry & spacja) i jakieś (nieistotne tutaj) miasto, to nie powinno być większych problemów.

    0
  • #13 12 Gru 2015 12:17
    annnaanna
    Poziom 4  

    Ślicznie dziekuje. W poniedzialek sprawdzę w pracy czy działa i dam znac

    0
  • #15 14 Gru 2015 08:54
    annnaanna
    Poziom 4  

    Witam.
    Do adamas_net chciala na początku Pana przeprosić za to ze dopiero teraz odpisuje. Jednoczenie podziekowac za makro, które Pan napisał.
    Makro które Pan napisał działa, tzn skanuje datę, nr dokumentu i nazwę dokumentu.

    Na 10 prob jakie zrobilam. 3 porazka(wg mnie ze względu na wiersze w tych dokumentach byly w innym miejscu); 7 poprawnie( w tym 1 przestawialo datę rrrr-mm-dd na rrrr-dd-mm). Ogólnie jest ok.

    liczyłam a nie wiem czy jest taka mozliwosc, ze makro będzie mozna podpiąć pod worda. I za pomocy skrótu zostanie uruchomione makro będzie skanować te dane. Nie wiem czy sie tak da zrobić.

    Nie wiem jakie bylo Pana zalozenie odnośnie makra. Makro które ze skanuje dane i przenosi do exela, w którym wstawia dane ze skanowane do konkretnej komorki. W skrócie sprawa 1 to w exelu odnajduje spraw 1 i wstawia dane ze skanowane.

    Chciala bym z góry przeprosić. Przemyślałam plik exela"dane" i doszłam ze najlepiej bedzie jak znaki spraw będą w kolumnie tylko A, ułożone po kolei. Jeśli jest taka potrzeba mogę wyslac wzor.

    Dodano po 7 [minuty]:

    Jeszcze jedna uwaga. Makro to dziala kiedy dane są zapisane w jakiś folderze. Rozumiem ze tak musi być. Myslalam ze jak makro będzie w wordzie to dokumentów nie będę musiala zapisywać.

    0
  • #16 14 Gru 2015 20:20
    adamas_nt
    Moderator Programowanie

    annnaanna napisał:
    Do adamas_net chciala na początku Pana przeprosić za to ze
    Jeju, za co? W zasadzie każdy swój post musiałbym rozpoczynać od przeprosin :)
    annnaanna napisał:
    liczyłam a nie wiem czy jest taka mozliwosc, ze makro będzie mozna podpiąć pod worda. I za pomocy skrótu zostanie uruchomione makro będzie skanować te dane. Nie wiem czy sie tak da zrobić. (...) Myslalam ze jak makro będzie w wordzie to dokumentów nie będę musiala zapisywać.
    Nie powinno być problemów. Dla pewności, proszę spróbować włączyć referencje do "Microsoft Excel xx.x object library" w normal.dot i zamknąć Word'a z zapisaniem. Najprościej: otwierając Word'a z menu Start, Alt+F11, Tools>References
    VBA jako skaner w wordzie
    Będziemy musieli odwrócić wiązania...

    Jeśli są jakieś wzory w ostatecznej formie, to jak najbardziej. Nikt przeróbek specjalnie nie lubi ;)

    Interesują mnie (i pewnie nie tylko) również te 3 porażki. Może wystarczy jedynie "sięgnąć głębiej" w treść dokumentu, lub dopisać jakiś drobiazg do warunków?

    0
  • #17 15 Gru 2015 16:42
    annnaanna
    Poziom 4  

    Witam.

    W pracy ok. 98% procent dokumentów generuje się z systemu. Nie ma potrzeby ich zapisywania na dysku komputera. Z tego ok 90 % przepuszacza się przez makro, ktore ma wylkreśla nie potrzebne rzeczy, np.Pan/Pani. W przypadku przepuszecznia przez to,że tak nazwie "nasze" makro nie zawsze działa Pana makro. to nie jest jakiś wielki problem. Zawsze mogę powiedzieć żeby uruchomili najpierw Pana makro a potem "nasze". I sprawa będzie załatwiona.

    Makro ktore Pan napisał, żeby można było podpiąć pod WORD. Wtedy za pomocą skórtu będzie można ze "skanować" potrzebne informacje i umieszczać w pliku"Dane_skaner". Przepraszam za zmiane. uwżam że ta wersaja jest czytelniejsza.

    Zmieniłam tylko plik "Dane_skaner". Wszystkie znaki zostały ułożone pokolei. Myślę że tak jest czytelniej i może łatwiej w znalezieniu, znaku sprawy(tylko kolumny A) i określonenej komórki gdzie mają być umieszczone dane(nr dokumentu i data).

    Przykład 1.
    Znak sprawy 0111-2233-0111-00000001/15, nr dokumentu 0111-00000001/15 data 03-07-2015, wezwanie do braków formalnych. Makro skanuje ten dokumentu i umieszcza w pliku"DANE_Skaner" w komórce B3(nr dokumentu) i datę w komórce C3.

    Przykład2.(DWA znaki spraw)
    Znak sprawy 0111-2233-0111-00000002/15, i drugi znak sprawy: 0111-22334-0111-00000001/15 nr dokumentu 0111-00000002/15 data 03-07-2015, wezwanie do braków formalnych.
    Makro skanuje ten dokumentu i umieszcza w pliku"DANE_Skaner" w komórce B4(nr dokumentu:0111-00000002/15 ) i datę(03-07-2015) w komórce C4, dla znaku sprawy 0111-2233-0111-00000002/15.

    Znak 0111-22334-0111-00000001/15, makro umieszcza dane odpowiednio; nr dokumentu 0111-00000002/15 w komórce B 5003; datę (03-07-2015)
    w komórce C 5003.
    W przypadku 3 znaków sprawy działa tak na takiej samej zasadzie.

    We wzorach jakie Panu umiesciałam wcześniej, zdarza się(tylko w przypadku wezwań) wystepowanie jednego lub dwóch lub trzech znaków sprawy. W zależności czy wezwanie obojmuje jedną czu dwie czy trzy sprawy. Numer dokumnetu dla każdej ze spraw będzie ZAWSZE taki sam.


    Po rozpakowaniu od Pana załączników i zrobienia "próby", po numerze dokumentu zaraz jest pojawiał się taki kwadracik. Nie wiem czy tak ma być.

    Ten druki załączniku jaki podpiełam, makro co Pan zrobił mi nie chodziło. Nie wiem dlaczego.

    Chciała bym przeprosić za swój błąd. Napisałam wezwanie do wyjaśnień a powinno byc wezwanie do złożenia wyjaśnień. WZOR podpiełam teraz.

    Mogła bym Panu z procedury podać wzory wszystkich dokumentów, ale one są zrobione w nastepujący sposób: w wordzie jest wklejone jakby zdjęcie, które wg. nie da się edytować ani skopiować.

    To już kończe swoje pisanie.

    0
  • #18 18 Gru 2015 09:15
    adamas_nt
    Moderator Programowanie

    Zauważyłem zmianę układu w DANE_SKANER.xls. Czy w takim (Wezwanie..2)
    Znak sprawy A: 0111-2233-0111-00000002/15
    Znak sprawy B: 0111-22334-0111-00000001/15
    przypadku, dane umieszczamy w dwóch wierszach (4 oraz 5003)

    A w takim (Decyzja1)
    Znak sprawy: 0111-65111-0111-00000001/15
    dopisujemy nowy wiersz (brak w kol 1)
    Dobrze kombinuję?

    W związku z tym, że w Word'zie nie ma excel'owskiego Find, wyszukiwanie wiersza zrealizowane jest w pętli. Mieliśmy już przypadek, że takie rozwiązanie na mojej maszynie "szło" pół dnia, na innych 5 sek.

    Przy czasie załączę w celu przetestowania. Proszę jednak o cierpliwość. Czas przedświąteczny ;)

    0
  • #19 18 Gru 2015 17:45
    annnaanna
    Poziom 4  

    [quote="adamas_nt"]Zauważyłem zmianę układu w DANE_SKANER.xls. Czy w takim (Wezwanie..2)
    Znak sprawy A: 0111-2233-0111-00000002/15
    Znak sprawy B: 0111-22334-0111-00000001/15
    przypadku, dane umieszczamy w dwóch wierszach (4 oraz 5003)

    Dodano po 2 [minuty]:

    Wezwanie 2 dobrze kolega rozumuje. Tak powinno być

    Dodano po 4 [minuty]:

    Nie sprawdzałam wzoru decyzji. Jest na innym kompie, Moglam popełnić błąd odnośnie decyzji. Pewnie we wzorze "Decyzji" powinien być Znak sprawy 0111-65111-0111-00000001/15 . Wtedy też umieszcza w date w odpowiedniej komórce

    Dodano po 5 [godziny] 20 [minuty]:

    Wzór "decyzji1" sprawdziłam, popełniłam błąd. Wysyłam poprawiony wzor

    0
  • #20 18 Gru 2015 21:09
    adamas_nt
    Moderator Programowanie

    Makro do przetestowania. Uwagi:

    1. Najlepiej wrzucić kod do modułu "normal.dotm". Najprościej: otworzyć Worda z menu 'Start', nagrać dowolne makro wybierając miejsce przechowywanie "szablon globalny". Następnie zastąpić je poniższym, włączyć referencje i zamknąć Worda z zapisem szablonu.
    Makro będzie dostępne w każdym dokumencie. Żeby nie rozsyłać makra z nowymi dokumentami, będzie trzeba wejść głębiej w zarządzanie szablonami.

    2. "Wezwanie do braków formalnych" <> "Wezwanie dla braków formalnych "
    dlatego (niewielka tolerancja się przyda):
    tytul = Array("wezwaniemalnych", "wezwaniejaśnień", "decyzja") oraz
    If test <> "decyzja" Then test = Mid(test, 1, 8) & Mid(test, Len(test) - 6, 7)

    3. W wielu miejscach jest trymowanie, usuwanie spacji, zamiana "O" na "0", itp
    być może potrzebne będą jeszcze jakieś czary-mary. Wyjdzie w praniu. Starałem się opisać wszystko w komentarzach.

    4. Lokalizacja pliku "DANE_SKANER.xls" - pulpit. Można zmienić przez przypisanie zmiennej "ePath".

    5. Jeśli nie odnaleziono 'znak sprawy' - zostanie wstawiony nowy wiersz na końcu

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    u mnie dla dwóch pozycji:
    VBA jako skaner w wordzie

    Wesołych Świąt!

    0
  • #21 19 Gru 2015 09:57
    annnaanna
    Poziom 4  

    Ślicznie dziekuje koledze za pomoc z makrem. W poniedzialek przetestuje i poinformuje o wynikach testu. Jeszcze raz dziękuję za pomoc.

    0
  Szukaj w 5mln produktów