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 drukowanie hurtowe makrem

krzys.kas 02 Mar 2017 10:17 711 16
  • #1 02 Mar 2017 10:17
    krzys.kas
    Poziom 3  

    Witam.
    Mam do wydrukowania 3000 dokumentów docx. Dokumenty zostaną zapisane w folderach.
    Czy jest możliwe wydrukowanie dokumentów po kolei, tak jak zapisane są w folderze? Jest możliwość za pomocą makra? Nie mogę zainstalować jakiegoś programu na komputerze.

    0 16
  • #2 02 Mar 2017 10:30
    adamas_nt
    Moderator Programowanie

    Składnia VBA jest prawie taka sama jak w Excelu, więc 'Dir' w pętli 'Do' powinno rozwiązać sprawę. Tutaj są przykłady. Nagraj drukowanie dokumentu i "wkomponuj" w pętlę...

    0
  • #3 02 Mar 2017 10:35
    krzys.kas
    Poziom 3  

    stworzyłem coś takiego:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Mam problem jak dodać scieżke aby pobierało dokumenty

    0
  • #4 02 Mar 2017 10:51
    adamas_nt
    Moderator Programowanie

    Tak na szybko, bez sprawdzania

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #5 02 Mar 2017 13:00
    krzys.kas
    Poziom 3  

    wywala błąd w end if.

    Dodano po 5 [minuty]:

    compile error:
    End if without block if

    taki wywała błąd

    Dodano po 1 [godziny] 44 [minuty]:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #6 02 Mar 2017 15:32
    clubs
    Poziom 29  

    Witam
    Dopisz tylko przed end if - loop w poście co ci podał @adamas_nt

    0
  • #7 03 Mar 2017 08:19
    krzys.kas
    Poziom 3  

    próbowałem i nie daje rady. makro nie pobiera danych z lokalizacji.

    0
  • #8 03 Mar 2017 08:39
    adamas_nt
    Moderator Programowanie

    Jest:
    plik = Dir(myPath & "*.docx*")
    powinno być:
    plik = Dir(myPath & "*.doc*")
    lub:
    plik = Dir(myPath & "*.docx")

    Spróbuj też:
    myPath = Environ("USERPROFILE") & "\Desktop\1-10\1-3\"

    Sprawdź krokowo [F8] co zostaje przypisane zmiennej "plik"
    WORD drukowanie hurtowe makrem

    0
  • #9 03 Mar 2017 09:12
    krzys.kas
    Poziom 3  

    za pomocą F8 od makro przechodzi z Do While plik <> "" od razu przechodzi do End Sub

    0
  • #10 03 Mar 2017 09:18
    adamas_nt
    Moderator Programowanie

    Wygląda na to, że podajesz złą ścieżkę, albo we wskazanej lokalizacji nie ma plików Word'a.

    Podmień (na chwilę):
    plik = Dir(myPath & "*.doc*")
    na
    msgbox Dir(myPath & "*.doc*")

    i zobacz co wyświetli.

    0
  • #11 03 Mar 2017 09:24
    krzys.kas
    Poziom 3  

    C:\Users\marek.korek\Desktop\1-100\1-3 tak wygląda ścieżka. otworzyłem folder i kliknąłem na pasek z lokalizacja plików.
    W pliku o nazwie 1-3, znajdują pliki word:
    nazwa plik tak wygląda:
    ANETA BAJER_676483.docx

    0
  • #12 03 Mar 2017 09:27
    adamas_nt
    Moderator Programowanie

    1-10
    1-100
    ?
    Zobacz post #5

    0
  • #13 03 Mar 2017 09:35
    krzys.kas
    Poziom 3  

    drukuje z 500 plików Word tylko jeden plik Word

    Dodano po 2 [minuty]:

    może dlatego że powinno być
    C:\Users\marek.korek\Desktop\1-100\1-3\ANETA BAJER_676483.docx do Kamil Kotwa_6768899

    0
  • #14 03 Mar 2017 09:43
    adamas_nt
    Moderator Programowanie

    No nie wiem już...
    U mnie ilość plików Word'a w nowej wersji pokazuje prawidłowo:
    WORD drukowanie hurtowe makrem

    I powinno być Close pewnie, nie Save

    0
  • #15 03 Mar 2017 09:55
    krzys.kas
    Poziom 3  

    u mnie nie pokazuje ilości plików.
    klikając F8 i mam dla próby 4 pliki i makro robi pętle 4 razy i za 4 kończy na end sub

    Dodano po 2 [minuty]:

    jak jest close to wywała błędy. saved jest ok tylko drukuje 1 plik i konczy na tym

    0
  • Pomocny post
    #16 03 Mar 2017 12:59
    robert55555
    Poziom 7  

    [code]

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod


    Sprawdz to makro

    0
  • #17 03 Mar 2017 20:57
    powerm
    Poziom 23  

    Moje 3 grosze...
    Obsługa błędu On error go to next powoduje, że od wskazanego miejsca komendy będą się wykonywać mimo, że nie dają jakiegokolwiek wyniku.
    Zalecam zmienić

    Code:
    Sub wydrukHurtowy()
    
    on Error goto Blad

    ...
    a na końcu przed End Sub
    Code:
    Exit Sub
    
    Blad:
    msgbox "Blad! " & err.number & "  " & err.description
    Resume Blad

    to raz

    dwa
    ... zaraz będziesz miał 3000 dokumentów otwartych więc zaraz po ActiveDocument.printout daj
    ActiveDocument.Close (wdDoNotSaveChanges)

    a trzy
    zmiennna automatycznyWydruk zawsze jest true
    więc warunek if automatycznyWydruk then
    jest zawsze spełniony i można go po prostu wywalić...
    wystarczy samo L = L +1

    0