Kiezen wat te printen in Word

Status
Niet open voor verdere reacties.

brammetje82

Gebruiker
Lid geworden
11 okt 2001
Berichten
373
Hallo lezers,

Even het volgende. Weet iemand of het mogelijk is om bij een document dat uit meerdere pagina's bestaat te bepalen dat je bijvoorbeeld pagina 1 vier maal wil afdrukken en pagina 2 1 maal.

(Word 97)

Mvg

Bram
 
Nou je kunt helaas niet aangeven in 1 opdracht dat je meerdere pagina nummers een ander aantal malen wil printen, hiervoor zul je dan toch meerdere print opdrachten voor moeten geven, dit doe je door als je gaat printen voordat je op ja drukt je eerst naar de eigenschappen van de printer gaat en daar kun je dan aangeven welke pagina of pagina achter mekaar en dan het aantal.
Let op je kunt dan alleen een range invullen dus van 1 tm 20 of iets dergelijks.
 
Hmm een printmacro? kun je daar wat meer over vertellen? Zou het bijvoorbeeld mogelijk zijn om naar aanleiding van een veld wat gexporteerd wordt naar Word een macro de opdracht te laten uitvoeren die zegt: in dat veld staat het getal 6 dus ik moet van die pagina 6 afdrukken maken?

Mvg

Bram
 
Geplaatst door brammetje82
Hmm een printmacro? kun je daar wat meer over vertellen? Zou het bijvoorbeeld mogelijk zijn om naar aanleiding van een veld wat gexporteerd wordt naar Word een macro de opdracht te laten uitvoeren die zegt: in dat veld staat het getal 6 dus ik moet van die pagina 6 afdrukken maken?

Mvg

Bram
Hai, :D

Wat bedoel jij met exporteren?

Als het gegeven in Word staat (6) en het heeft een referentie punt (het staat in een bladwijzer, veld, etc...) dan is het mogelijk.

Plaats maar even een voorbeeldje van jou document dan doe ik even een opzetje!

Maak nog wel even héél duidelijk waar die 6 vandaan komt en hoe dat deze in het document komt/en waar in het document

See Yah! :thumb:
 
Hee Joost,

Deze sticker zou ik dus eigenlijk "selectief"willen printen.
De bijlage die je ziet is het samenvoegbestand. Word haalt zijn gegevens uit een ander systeem (Corsa 7.1)en zet deze in de velden die er op de sticker staan (tussen de haakjes). Binnenkort zal er nog een veld extra bijkomen waarin wordt aangegeven uit hoeveel delen een poststuk bestaat (Bijv. die 6) en dus hoeveel er van deze stickers uitgeprint moeten worden dmv die macro. Dat veld zou bij voorkeur rechts langs de tekst "gemeente schijndel"moeten komen te staan.
(zie ook bijlage)

Mvg

Bram
 

Bijlagen

Laatst bewerkt:
Hai Bram, :D

Ai een samenvoegveld...dat maakt de zaak ineens een stuk gecompliceerder! (niet onmogelijk)

Heb nu helaas toch wat meer info nodig:
* Hoe voer jij normaal de merge uit? Is dit dat je gelijk van alle mensen uit de gekoppelde database het samenvoegen (Naar printer?) uitvoert?

Of is het zo dat je de gegevens eerst filtert?

Ik zit eigenlijk aan een macro te denken welke ook het samenvoegen uitvoerd maar daarvoor is het wel handig als de gehele database in één keer uitgevoerd wordt.

Maar goed kan me zo geen beeld vormen van hoe jij normaal de stickers samenvoegd/print..

Wellicht kun je dit nog even ophelderen dan kan ik nog even bekijken hoe je dit het handigst kunt doen...(Ben namelijk bang dat dat veld met het aantal delen ook iets is wat per klant kan verschillen en daarom moet deze van iedere record uitgelezen worden)

Vertel? ;)
 
Hoi Joost,

Was al bang dat er door die samenvoegvelden een addertje kroop :)

We voegen allemaal op de volgende manier samen.
In het programma Corsa 7.1 wordt een lijst gegenereerd die vanuit dat programma naar een tijdelijk .doc bestand worden gexporteerd (zie bijlage). Die wordt op iedere werkplek benaderd op de C: schijf.
Vanuit dat bestand (poststicker.doc) worden de betreffende gegevens naar poststicker.doc samengevoegd. Let op, je hebt hier dus twee keer poststicker.doc! 1 voor de tijdelijke gegevens op de c schijf en 1 voor alles samen te voegen op een netwerkschijf.
Ik hoop dat je zo genoeg gegevens hebt Joost, zo niet dan hoor ik het wel. Iig bedankt dat je er tijd in wilt steken.
Mvg

Bram
 

Bijlagen

Hai Bram, :D

Ik denk dat ik het snap dus ga eens een opzetje voor jou maken...:thumb:
 
Hai Bram, :D

Ik heb al een redelijk opzetje klaar maar ik heb weer een vraag:

* Ik neem aan dat jij deze etiketten op een speciale printer uitprint?

* Zo nee als dit jou default printer is meldt dat dan even.

* Zo ja:
Neem even een macro op: Extra/macro/Opnemen (of zoiets) ;)
Kies CTRL+P (Adrukken)
Selecteer in de keuzelijst de printer waarop je normaal gesproken de etiketten print
Kies Annuleren.
Druk op de stop knop voor opnemen.

Kies nu ALT+F11 en dubbelklik op newMacros.

Hier moet nu zo'n regel in staan:
ActivePrinter = "Auto OKIPAGE 24DX on DISCO"

Dit zal de printstring zijn van jou Printer.

Post die even hier terug zodat ik die in mijn macro kan verwerken.

See Yah! ;)
 
Hoi Joost,

Bij dezen:

Sub testbram()
'
' testbram Macro
' Macro opgenomen op 31-12-04 door bvn
'
ActivePrinter = "\\SIEM-CS-ALA\vernietigen/poststukken"
End Sub

Groetjes

Bram
 
Hai Bram, :D

Ok heb nu voldoende info het zal echter nog niet meevallen om het in te voeren bij jou!

Ik heb de code zelf niet kunnen testen maar het zou goed moeten komen!....

OK BRAM, HAAL EVEN DIEP ADEM! :p

Stap voor stap:
* Zorg dat er in het gegevensbestand (wat door het programma Corsa wordt gegenereerd) een veld is opgenomen voor het aantal poststukken!

* Let op in mijn code heet het veld: "poststuk_aantal". Als jij daarvoor een andere naam gaat gebruiken verander die naam dan ook in MIJN CODE!!!!!

* Open jou samenvoegdocument Poststicker.doc
* Voeg het samenvoegveld "poststuk_aantal" in op de door jou gewenste locatie. (nu maakt deze deel uit van het samenvoegdocument)
* Sla het document op en probeer een samenvoeging met een gegevensbestand of dat alle aantallen/velden juist worden ingevuld.

Indien in orde:
* Pak de ingezipte bijlage uit in een folder. (Dit is een vba module)
* Open jou samenvoegdocument Poststicker.doc
* Toets ALT+F11 (VBE)
* Toets CTRL+R (Project verkenner)
* Selecteer Project (Poststicker)
* Rechtermuisknop op het geselecteerde project en kies: Bestand Importeren
* Blader nu naar de juist uitgepakte VBA module en kies Open!
* Nu staat de module in de VBE
* Kies Foutopsporing Project compileren
* Als er een fout gemeld wordt deze HIER melden en niet verder gaan!
* Geen fout mooi kies Opslaan.
* Sluit de VBE en keer terug naar het Word document
* Sluit deze en indien nodig sla hem op.

Uitvoeren code:
* Zorg dat er voor de test een gegevensbestand wordt geëxporteerd wat slechts 2 regels bevat. (om te testen)
* Open jou samenvoegdocument Poststicker.doc
* Bij de vraag om Macro's te activeren Kies je Macro's inschakelen!
* Let op!; krijg je voorgaande vraag niet dan staat de macrobeveiliging nog niet goed! Ga naar menu/Extra/Macro's/Beveiliging en zet deze op gemiddeld! (Begin nu opnieuw bij het kopje uitvoeren code!)
* Druk nu op ALT+F8 en selecteer in de macro dialoog de macro: "PrintEachDoc" en kies de knop Uitvoeren!

* Als alles goed is word nu de samenvoeging voltooid en wordt de eerste pagina telkens maal het veld: "poststuk_aantal" afgedrukt en pagina 2 slechts éénmaal!
* Na uitvoering wordt de originele printer weer ingesteld en zijn we klaar!

Hier de code voor de andere leden ter leering en vermaak:
Code:
Sub PrintEachDoc()
Dim oApp        As Word.Application
Dim intCount    As Long
Dim intTotal    As Long
Dim blnMM       As Boolean
Dim sDefault    As String
Dim sCount      As String

On Error GoTo Err_PrintDoc

 Set oApp = Application
    With oApp
        .DisplayAlerts = False
        .ScreenUpdating = False
        sDefault = .ActivePrinter
        .ActivePrinter = "\\SIEM-CS-ALA\vernietigen/poststukken"
        
        With .ActiveDocument.MailMerge
        blnMM = False
        intCount = 1
        intTotal = .DataSource.RecordCount
        
            Do Until blnMM
                .DataSource.ActiveRecord = intCount
                sCount = .DataSource.DataFields("poststuk_aantal").Value
                    If .DataSource.ActiveRecord <> intCount Then
                        blnMM = True
                    Else
                        .DataSource.FirstRecord = intCount
                        .DataSource.LastRecord = intCount
                        .Destination = wdSendToNewDocument
                        .Execute
                        With oApp.ActiveDocument
                            .PrintOut Range:=wdPrintFromTo, Background:=False, _
                                Copies:=sCount, From:="1", To:="1", Collate:=True
                            .PrintOut Range:=wdPrintFromTo, Background:=False, _
                                Copies:="1", From:="2", To:="2", Collate:=True
                            .Close False
                        End With
                    End If
                intCount = intCount + 1
            Loop
        End With
        
Exit_PrintDoc:
        .ActivePrinter = sDefault
        .DisplayAlerts = True
        .ScreenRefresh
        .ScreenUpdating = True
    End With
 Set oApp = Nothing
 Exit Sub
 
Err_PrintDoc:
MsgBox "Code uitvoering wordt beëindigd door storing: " & vbCr & _
        Err.Number & " " & Err.Description
Resume Exit_PrintDoc

End Sub

Veel succes! :thumb:
 

Bijlagen

Hee Joost,

Heel erg bedankt voor de moeite. Ik ga het eea uit proberen en houd je verder op de hoogte.

Mvg

Bram
 
Hai Bram, :D

Graag gedaan!

Ben benieuwd of het in één keer goed gaat of dat er nog wat aan de code getweaked moet worden...

See Yah! :thumb:
 
Hee Joost,

Ik heb het eea even uitgeprobeerd maar er onstaat een probleem. Het werk namelijk niet :-)
Maar ik denk dat ik de oorzaak heb. Ik kwam er bij het testen achter dat na het samenvoegen van de (temp) gegevens uit "poststicker.doc" met het samenvoegbestand "poststicker.doc"
een nieuw document gevormd wordt waar deze gegevens in samengevoegd zijn namelijk etiketten1.doc
Hierin wordt deze macro dus niet meegenomen omdat deze staat in het samenvoegbestand. Althans dat is voorlopig mijn theorie. Denk je dat die zou kunnen kloppen? Als ik de macro vervolgens "loslaat" op dit document krijg ik een volgende foutmelding:

"Compileerfout:
Kan methode of gegevenslid niet vinden"

En kleurt blauw bij de ".RecordCount" in het volgende stuk code

intTotal = .DataSource.RecordCount

Mvg

Bram
 
Laatst bewerkt:
Hai Bram, :D

Heb het druk dus reactie is wat later.

Ik heb de code gecompileerd en ik heb deze error niet gekregen..de syntax is ook goed dus daarom denk ik dat jij een totaal andere Word-versie gebruikt als ik..

Kan het zijn dat jij 97 gebruikt deze conflicteerd nogal eens met hogere versies!

Jou theorie klopt echter niet want de bewuste foutcode wordt als deze gerund zou kunnen worden voor het eigenlijke samenvoegen uitgevoerd en dan zijn er dus nog geen samenvoegdocumenten(Resultaten)..maar goed dat is verder niet boeiend..

Het is vast de Word-versie..dus vertel dan ga ik eens in die versie testen?

See Yah! ;)
 
Hee die Joost,

Het is idd de versie denk ik. Wij gebruiken (helaas *zucht*) nog steeds Word 97.
Sorry had ik even moeten vermelden :o .


Groeten
Bram
 
Hai Bram, :D

Tja daar was ik ook al bang voor! (verder geen punt hoor) :)

Deze kent idd verschillen in syntax..maar dat moet ik even op een 97 machine gaan bekijken!

Ga mijn best voor je doen! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan