• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Cel selecteren voor het printen (VBA BeforePrint)

Status
Niet open voor verdere reacties.

Gijsbert1

Gebruiker
Lid geworden
7 apr 2016
Berichten
985
Beste Forumleden,

Graag wil ik in een bestand een cel (A1) selecteren voordat ik het werkblad "planning" uitprint.
Dit is gelukt met:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Range("A1").Select
End Sub
Dit wil ik echter niet voor de andere werkbladen uit mijn bestand dus heb ik er het volgende van gemaakt:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "planning" Then
Range("A1").Select
End If
End Sub
Dit werkt helaas niet, maar het geeft ook geen foutmelding!
Het is waarschijnlijk een kleinigheidje maar ik heb al van alles geprobeerd maar kom er niet uit!

Wat doe ik fout?
 
Laatst bewerkt:
Waarom ?

Op de afdruk zie je toch niet waar de cursor staat ?
 
Vind ik in het kort lastig uit te leggen!
Het betreft een bestand met veel code.
Kolom A is verborgen maar elders wordt er info gevuld middels een Target.row opdracht.
Dit is bij live gebruik nodig, maar niet om te printen.

Ik kan het bestand reduceren zodat ik kan posten, maar de vraag zelf leek me duidelijk genoeg!
 
Code:
sheets("planning").activate
cells(1,1).select
 
Ha EvR,

Dank voor je input!
Dit is alleen niet wat ik zoek!

Ik wil niet dat een ander werkblad wordt geactiveerd!
Ik wil dat, als ik in werkblad "planning" iets uitprint, de cursor zich eerst verplaatst naar cel A1
Als ik in andere werkbladen iets wil uitprinten, mag dit juist niet gebeuren. (want anders kun je nooit een selectie uitprinten)
 
Ik heb mijn bestand even helemaal naar de basis gebracht.
Ik hoop dat mijn doelstelling nu duidelijker wordt!

Bekijk bijlage 273225
(Van origine is dit bestand 20MB groot met 8 tabladden en ongeveer 8000 regels op tabblad planning.)

Hieronder mijn verklaring waarom ik cel (A1) wil selecteren voordat ik het werkblad "planning" uitprint.

De bedoeling is dat er tijdens een meeting wordt gefilterd op activiteit(afdeling).
Dit doe ik met gebruik van een userform.
Tijdens dit live gebruik moeten de gele velden met info meelopen met de cursor. zoals in het voorbeeld!
Nu wil ik bij het printen enkel de afdeling zien in het middelste gele veld!
Om dit te bereiken heb ik ervoor gezorgd dat bij het selecteren van cel A1, de laatste afdelingskeuze uit de filter wordt getoond in het middelste gele veld! Een voorbeeld van zo'n print: Bekijk bijlage 273227
Aangezien er ongeveer 20 afdelingen zijn waarvan een PDF geprint dient te worden van de planning vind ik het handig om het selecteren van A1 middels VBA te doen!

Nu zijn er ook andere werkbladen in mijn bestand waarvan ik soms enkel een selectie wil uitprinten.
Maar dan loop ik tegen het probleem aan zoals ik in #post1 al heb omschreven!

Het klinkt misschien allemaal omslachtig maar ik dacht dat mijn probleemstelling op zichzelf wel duidelijk was!

Wie kan me helpen?

Alvast bedankt!
 
zie post#6

jouw tabbladnaam heeft nog een spatie achter planning.....
 
Jeetje... :o:o:o:o:o:o:o:o:o

Hoe bedoel je. Tunnelvisie!
Hier heb ik dus heel lang mee zitten klooien... :o:o
Dat belletje is na post#6 niet gaan rinkelen.
Mijn excuses, dat was dus alles!

In ieder geval onwijs bedankt voor de ontdekking van de fout!!! :thumb:
 
Had nu maar meteen je bestand geplaatst.... ;)
 
Je hebt gelijk.
Maar dat leek me te veel werk voor een (dacht ik) makkelijke vraag!
Dom van me.
 
Ik vermoed dat je onvoldoende weet hebt van de PDF-afdrukmogelijkheden in Excel.
Ik vraag me af hoe jij de 'print'opdracht geeft (want de positie van de cursor doet er nl. helemaal niet toe).
 
Wat dat onvoldoende weten betreft heb je helemaal gelijk!
Ik leer ook steeds een beetje bij om actief mee te kijken op dit forum!
Maar de positie van de cursor doet er voor mij wel degelijk toe! Het bepaalt de info die in de gele vlakken (zie bestand Post#7) komt!
Nu zullen er ongetwijfeld makkelijkere wegen naar Rome leiden, maar het werkt nu wel!

Het printen wordt door meerdere gebruikers gedaan, gewoon via ctrl-P
 
In excel maak je PDF met de opdracht .exporttofixedformat;
Met Ctrl-P moet de gebruiker nog steeds van alles doen. Zet de .exporttofixedformat gewoon achter een knop.
 
Hoi SNB,

Ik heb wat zitten helpmij-knutselen en googlen met die ExportAsFixedFormat suggestie.
Wat briljant! :thumb:
(Het heeft niets te maken met het topic-onderwerp maar die heb ik toch al als opgelost gemarkeerd)

Je kunt dus ook de opslag locatie vanuit VBA zelf bepalen en aanmaken indien nodig!
De code die ik, zals je aangaf, onder een knop heb gehangen is de volgende geworden:
Code:
Sub PDF_print()
Range("A1").Select

Dim Dossier As String
Dim Bestandsnaam As String
Dim Path As String

    Dossier = Right(Replace(ActiveWorkbook.Name, ".xlsm", ""), 8)
    Rng = Worksheets("VBA-codeblad").Range("D18:E34")
    Bestandsnaam = WorksheetFunction.VLookup(Cells(3, 1).Value, Rng, 2, False)
    Path = "F:\FBProductieUnit\02 - Orders IHC Fabrication\0000 algemeen projectoverleg\operationeel planning overleg\" & Dossier & "\"

If Len(Dir(Path, vbDirectory)) = 0 Then
    MkDir (Path)
End If

With ActiveSheet
    .ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Path _
    & Bestandsnaam & ActiveSheet.Range("A3").Value, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=True
End With
End Sub

Zie jij nog dingen die beter kunnen?
Zelf ben ik al zeer tevreden maar leer graag!

Groet Gijsbert
 
1. geef altijd de naam aan van het werkblad waarin je wil werken
2. gebruik nooit 'select'
3. gebruik geen spaties in namen van directories (=folders=mappen)
4. gebruik geen 'activesheet' of 'activeworkbook' maar benader ze ondubbelzinnig (sheets("planning") of sheet5 (=codename) resp. thisworkbook of workbooks("voorbeeld.xlsm")
5. vermeldt geen defaulteigenschappen, dat is overbodig; ze zijn niet voor niets default gemaakt.

Code:
Sub PDF_print()
  application.goto sheet1.cells(1)
   
  sn = sheets("VBA-codeblad").Range("D18:E34")
  for j=1 to ubound(sn)
    if sn(j,1)=sheets("Planning").cells(3,1) then exit for
  next

  c00 = "F:\FBProductieUnit\02_Orders_IHC_Fabrication\0000_algemeen_projectoverleg\operationeel_planning_overleg\" & createobject(scripting.filesystemobject").getbasename(thisWorkbook.fullname) & "\"

  If Dir(c00, 16) = 0 Then MkDir c00

  sheets("planning").ExportAsFixedFormat 0,c00 & sn(j,2) & sn(j,1)
End Sub

Als je naast cel A3 de corresponderende waarde uit tabel D18:E34 zet, wordt de code natuurlijk nog een stuk eenvoudiger: zonder de lus en de variabele sn.
 
Laatst bewerkt:
Wederom bedankt! Ik ga aan de gang met je verbeter punten!

:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan