vba werkt niet

Status
Niet open voor verdere reacties.

mooske04

Gebruiker
Lid geworden
21 nov 2011
Berichten
200
Luitjes,

als antwoord op een andere vraag heb ik van een mede-forummer een geweldige VBA gekregen en aangepast.

Het gaat hier om eenVBA die bij opslaan als PDF wel afbeeldingen laat zien, maar wanneer ik het excel bestand print, dan moet het niet geprint worden.
Wanneer ik de VBA run, dan doet ie bovenstaande precies, en krijg ik 2 printjes zonder afbeelding.
Als ik echter niet de VBA run, maar in mn werkblad voor afdrukken kies, dan krijg ik de afbeelding helaas wel uitgeprint...

Iemand een oplossing hiervoor? Je zou immers zeggen dat de VBA goed is.....

oh ja, hierbij de VBA

Code:
Sub opslaan_en_mailen()

 'Worksheets(6).Cells(11, 16) = 0
 '' application.Calculate 'bereken sheet
 With ActiveSheet
.Shapes("Afbeelding 6").Visible = False 'verwijder het logo
.Shapes("Afbeelding 8").Visible = False 'verwijder het logo
 Dim strCurrentPrinter As String
 strCurrentPrinter = Application.ActivePrinter ' onthoud de standaard active printer
 On Error Resume Next ' negeer print fouten
 Application.ActivePrinter = "OKI MC361 PCL" ' switch naar een andere printer
 ActiveSheet.PrintOut ' print de actieve sheet
 ActiveSheet.PrintOut Copies:=1, ActivePrinter:="OKI MC631 PCL"
 Worksheets(6).Cells(11, 16) = 1
 Application.Calculate 'bereken sheet
 .Shapes("Afbeelding 6").Visible = True  'plaatst het logo terug
 .Shapes("Afbeelding 8").Visible = True  'plaatst het logo terug
 Application.ActivePrinter = strCurrentPrinter ' terug naar de standaard printer
 On Error GoTo 0 ' hervat de normale fout afhandeling
 Set OutMail = Nothing
 Set OutApp = Nothing
 Range("L45").Value = "Klaar."
 End With
 End Sub
 
Laatst bewerkt door een moderator:
De VBA wordt echter niet aangeroepen bij het printen.

Je kunt via de "WorkbookBeforePrint" routine wel de logo's wel tijdelijk uitzetten, maar er is volgens mij geen eenvoudige manier om de logo's terug te zetten als het printen klaar is, tenzij je het printen afvangt in deze procedure en de normale procedure stopt.

in WorkbookBeforePrint voer je bovenstaande code uit en cancelled de normale print procedure. Het werkt dan zoals je wil, maar kun je niet meer op de "normale" manier printen.
 
Elke handigheid om het logo wel zichtbaar te houden bij opslaan als PDF en niet daadwerkelijk met printen is welkom....
Wie, wat/waar/ hoe werkt de "workbookbeforeprint"?
 
Open vba en in de project explorer (standdard aan de linkerkant) dubbel-click op "thisworkbook"

plak vervolgens dit in het venster:

Code:
Private Sub Workbook_BeforePrint(Cancel as Boolean)
Call opslaan_en_mailen
Cancel = true
End Sub

Ik neem aan dat opslaan_en_mailen dan alleen code bevat relevant voor het printen en niet de andere zaken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan