[ sasa.je @ 25.06.2020. 09:09 ] @
Da li je neko pokušavao da riješi temu iz naslova. Dakle, napravio sam MailMerge dokument i treba da pošaljem na štampu. Dokument se sastoji od 3 stranice a ima stotinjak zapisa pa bih trebao da dobijem svaki dokument zasebno spojen. Međutim, šta god da uradim, on spaja sve zajedno. Unosio sam razne macroe koje sam nalazio na netu ali ne pomaže.
[ Jpeca @ 25.06.2020. 15:44 ] @
Šta tačno hoćeš da dobiješ
Jedan dokument po 3 strane za svaki zapis - unosiš ručni prelom strane Ctrl+Enter u dokument koji se koristi za mail merge
100 posebnih dokumenata sa 3 stranice - mail merge ima filtriranje ali ovo je ručno naporno. Postoji neki outline mode koji se koristi za email, pa probaj to https://www.youtube.com/watch?v=yI6Z9t-oPLM
3 dokumenta sa po 100 strana - praviš poseban mail merge za svaku stranu
ili nešto drugo ?
[ sasa.je @ 25.06.2020. 21:06 ] @
Uh, Peco. Nisam bio najjasniji, izvini :) Dakle, MailMerge sam sve završio, ništa nije problem tu. Sam dokument koji sam kreirao ima zasad stotinjak redova u ekselu, samim tim, biće toliko tih rješenja. Plus svi se štampaju u 4 primejrka. A kad dođe do štampanja, planirao sam da zadam sve odjednom, ili bar u grupama po 10-20. Ono što mi treba je kad odštampa jedno rješenje, da ga printer zahefta. Printer je veliki Canon kopir, ne znam sad napamet koji. Danas sam nalazio neke macroe na netu za Word koji bi to trebli da riješe, ali ništa. Testno sam puštao samo dva reda, i onda lijepo izađe tih 6 listova i printer ih zahefta svih 6. Meni treba da svaki od ta dva predmeta posebno zahefta. Problem će biti kad pustim 20 zapisa pa izađe 60 lsitova i moraju se ručno soritrati.
Nadam se da sam sad bio malo jasniji.
[ Jpeca @ 26.06.2020. 08:35 ] @
Nemam pojma o tom apraratu, ali pretpostavljam da ako posljes pojednacne fajlove - varijanta 2 - da ce da ih zahefta fajl po fajl. Da ne bi stampao fajl po fajl mozes iskoristiti vba da pošalješ više fajlova na štampu odjednom https://www.datanumen.com/blog...print-multiple-word-documents/
[ Almedin @ 26.06.2020. 14:23 ] @
Tebi treba da Word svaki mergeani dokument posalje kao zaseban print job a Word nema tu opciju. Ovaj makro bi trebalo da odradi to sto ti treba. Prolazi kroz sve redove podataka i orinta dokument za svaki red.

Dim ds as MailMergeDataSource
Dim n as integer
Dim i as integer

ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
Set ds = ActiveDocument.MailMerge.DataSource
n = ds.RecordCount
for i = 1 to n
ds.ActiveRecord = i
ActiveDocument.PrintOut
Next
[ sasa.je @ 29.06.2020. 08:30 ] @
Almedine, nije pomoglo. Nisam siguran ni da li dobro unosim macro u word-u. Ulazim sa Alt+F11 u VBA, zatim biram opciju Insert Module i zatim prekopiram ovaj tekst koda. Sačuvam dokument kao macro-free (.xlsm) i pokrenem ponovo.
Međutim, ne pomaže ni ovaj tvoj kod kao ni oni koje sam nalazio na netu. I dalje zahefta sve listove zajedno.
[ Almedin @ 29.06.2020. 15:07 ] @
Je li ti pokreces ovaj makro iz glavnog dokumenta? Probaj ovako. Otvori glavni dokument, imaš gore komande za merge gdje biras aktivni red. Postavi na 1 i uradi print iz worda, na printer bi trebalo da izadju te tri stranice i da ih printer zahefta. Pomjeri aktivni red na 2 i opet print, opet treba da zahefta.
[ sasa.je @ 29.06.2020. 21:00 ] @
Pa to je 'pješke' :). Meni ej cilj da zadam 20 dokumenata i da ih sve zasebno zahefta
[ bokinet @ 29.06.2020. 21:38 ] @
Sustina @Almedin sto je rekao je da ako radi peske da to peske moze i da se automatizuje sto opet implicira da niste uradili nesto kako treba da bi to radilo kako hocete...
[ sasa.je @ 30.06.2020. 06:46 ] @
Bokinet, nisam siguran da sam shvatio. Ako štampam iz Mailings-a što mi je i logično, odem na Print document i tu biram hoću li da štampam svih 100 dokumenata ili ću parcijalno. Svaki dokument ima 3 lista i ja hoću da ih zahefta posebno.
Ovo što je Almedin predložio, to je OK, na kraju sam i mislio tako da uradim. Ulaziću u svaki dokument i slati ga na štampu bilo direktno (File-Print) bilo iz Mailingsa.
Ja sam htio da pokušam da to uradim automatski. Vidim na netu da rješenja postoje, ali imam utisak da nešto fulam sa macroom.
[ Almedin @ 30.06.2020. 07:53 ] @
Kao sto @bokinet reče, ovo sto sam predložio je u stvari isto ono sto makro radi samo ručno. Nisi odgovorio na pitanje gdje ti pokrenes makro, iz kog dokumenta. Dakle, prvo ručni metod. Otvoriš dokument u kojem si postavljao polja (taj dokument ima 3 stranice). Gore u toolbaru imas komande za biranje aktivnog reda. Izaberi 1. Pokja bi trebalo da dobiju vrijednosti iz prvog reda podataka i treba da ih vidis. Iz wordovog standardnog toolbara izaberi print (normalni print kao sto bi stampao bilo koji dokument a NE raditi mail merge na printer). Na printer mora izaci dokument od 3 strane i printer ih mora zaheftati. Izabereš red 2 u toolbaru za mailmerge i ponovis print i, opet, mora izaci dokument i biti zaheftan. Ako ti ovo radi ovako, mora raditi i makro. Makro pokreces iz dokumenta od 3 strane. Ovo govorim zato sto se neki makroi pokrecu iz dokumenta koji se kreira iz mail merge (onog sa, recimo, 300 strana) i rade na drugom principu (traze sekcije u dokumentu).

Ovo gore navedeno mora da radi. Ako ne radi, opisi tacno i precizno postupak sta radis, korak po korak.

Smiješno pitanje, ali, das li ime makrou i pokrenes li makro jer si rekao "prekopiram ovaj tekst koda" a kod koji sam ja napisao je samo tijelo, nema naziva funkcije?
[ sasa.je @ 30.06.2020. 08:36 ] @
Pa i nije smiješno pitanje, obzirom da nisam davao nikakvo ime Macro-u :). Nisam baš familijaran sa macroima. Sad sam ponovo sve obrisao i krenuo ispočetka. Ušao sam e Developer tab i kliknuo rrecord macro i odmah zaustavio. Macro je kreiran, zove se Macro1. Zatim sam kliknuo opciju Macros na Developer tabu i na Edit tog macroa i unio kod koji si ti dao.
Zatim kad kliknem Run Macro on krene da štampa, ali u tom slučaju on štampa bez ulaska u printer opcije, a opcija Stapling nije uključena po defaultu. Onda sam otišao u Printer properties i stavio da je Stapling po defaultu uvijek uključen.
Nakon toga sam ponovo otišao i pokrenuo Macro i on je odradio ovo što sam tražio.
Da li je to ispravan način?
Dakle, ne idem ni u Print opciju glavnog dokumenta niti Mailingsa, nego samo kliknem Run Macro.
To će mi sad riješiti problem, ali nije baš najelegantnije rješenje.
Da ne bude da tražim hljeba preko pogače. ali sam planirao da puštam iz Mailingsa i da puptam po 20 radi lakše kontrole. Sad sam recimo za ovo testiranje otišao u bazni eksel dokument i obrisao sve redove osim prva 3 da mi ne bi džaba vukao sve dokumete jer mi ta štampa treba tek za desetak dana kad sve bude gotovo.
Almedine i Bokinet, hvala na dosadašnjoj pomoći. :)
[ Almedin @ 30.06.2020. 09:59 ] @
Dodaj printer potpuno isti kao taj vec postojeći, nazovi ga 'Heftanje", ukljuci mu heftanje i koristi ovaj makro. Makro ce pitati za raspon za štampanje i štampat ce na printer "Heftanje".

Dim ds as MailMergeDataSource
Dim n as integer
Dim i as integer

Dim nFrom as integer
Dim nTo as integer

Dim sPrinter as string
Const MY_PRINTER as string = "Heftanje"
sPrinter = Application.ActivePrinter
Application.ActivePrinter = MY_PRINTER

ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
Set ds = ActiveDocument.MailMerge.DataSource
n = ds.RecordCount

nFrom = CInt(InputBox("Od (1 - " & n & ")"))
nTo = CInt(InputBox("Do (" nFrom & " - " & n & ")"))

for i = nFrom to nTo
ds.ActiveRecord = i
ActiveDocument.PrintOut
Next

Application.ActivePrinter = sPrinter
[ sasa.je @ 30.06.2020. 12:21 ] @
Almedine, izvini na smaranju, međutim mene ovi macroi nikako ne idu. Nakon što mi je prošli put uspjelo da odštampam i zaheftam te testne primjerke htio sam da isprobam ovaj tvoj novi kod.
Sad mi ništa ponovo neće, kad uđem u Developer tab i kliknem na dugme Macros nema ih nego ponovo snimam novi. Kad pokrenem macro na komamdu Run Macro, dobijem grešku koju kačim kao prilog.
Ako te mrzi da se bakćeš ovim, puštaću ih jedan po jedan, šta da radim drugo.
[ Almedin @ 30.06.2020. 14:25 ] @
Bila je greska, evo ispravio sam. A makro snimi u taj dokument.

Dim ds as MailMergeDataSource
Dim n as integer
Dim i as integer

Dim nFrom as integer
Dim nTo as integer

Dim sPrinter as string
Const MY_PRINTER as string = "Heftanje"
sPrinter = Application.ActivePrinter
Application.ActivePrinter = MY_PRINTER

ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
Set ds = ActiveDocument.MailMerge.DataSource
n = ds.RecordCount

nFrom = CInt(InputBox("Od (1 - " & n & ")"))
nTo = CInt(InputBox("Do (" & nFrom & " - " & n & ")"))

for i = nFrom to nTo
ds.ActiveRecord = i
ActiveDocument.PrintOut
Next

Application.ActivePrinter = sPrinter
[ sasa.je @ 01.07.2020. 07:23 ] @
Probao sam na brzinu u ovom testnom dokumentu i radi. nadam se da će tako raditi i u glavnom. Almedine, puno hvala :)
[ sasa.je @ 01.07.2020. 14:58 ] @
Almedine, radi u radnom dokumentu. Hvala ti još jednom :)