Meerdere sheets als 1 bestand afdrukken uit een listbox

Status
Niet open voor verdere reacties.

Tocador

Gebruiker
Lid geworden
19 jan 2016
Berichten
14
Hallo, ik heb al een groot gedeelte van mijn uitdading klaar. Ik heb een listbox gemaakt waar ik de af te drukken sheets kan selecteren en deze worden dan naar de printer gestuurd. Het probleem is echter dat ik niet in het scherm kom om een printer te kiezen maar direct naar de printer. Ik kom via Application.Dialogs(xlDialogPrint).Show in het scherm wat ik wil. Het lukt me echter nog niet via onderstaande listbox. Ik zit nog in prille fase van VBA en heb daardoor een nieuwe verslaving ;-) Weet iemand welke fout ik maak in onderstaande code?





Private Sub LstPrint_Click()

End Sub

Private Sub PDF_Click()
If MsgBox("Het lukt voor geen meter.", vbOKCancel, "Printen") = vbOK Then
For x = 0 To LstPrint.ListCount - 1
If LstPrint.Selected(x) = True Then Worksheets(LstPrint.List(x)).PrintOut Copies:=1, Collate:=True


Next
End If
End Sub

Private Sub UserForm_Initialize()
Dim sh As Worksheet
With LstPrint
.Clear
For Each sht In Worksheets(Array("Voorblad", "HSB-wand", "plat dak", "spouwmuur", "begane grondvloer"))
.AddItem sht.Name

Next
End With
End Sub
 
Test het zo maar eens.
Code:
Private Sub PDF_Click()
Dim x As Long
If MsgBox("Het lukt voor geen meter.", vbOKCancel, "Printen") = vbOK Then
For x = 0 To lstPrint.ListCount - 1
 If lstPrint.Selected(x) Then
   Me.Hide
     If Application.Dialogs(xlDialogPrinterSetup).Show Then Sheets(lstPrint.List(x)).Printout
   Me.Show
 End If
Next
End If
End Sub


Private Sub UserForm_Initialize()
 lstPrint.List = Array("Voorblad", "HSB-wand", "plat dak", "spouwmuur", "begane grondvloer")
End Sub
 
Laatst bewerkt:
HSV alvast bedankt voor je snelle reactie. Ik ga het morgen meteen proberen.
 
HSV ik heb net de code getest maar helaas is er niets anders dan voorheen. Het wordt nog steeds op een nieuwe pagina geprint. Terwijl het eigenlijk een voorblad met volgpagina's moet zijn. Maar toch bedankt.
 
Ik dacht dat je de 'show' niet voor elkaar kon krijgen.
Waarom heb je dan een Listbox met alle werkblad-namen als je het gehele werkboek wil afdrukken.
 
Harry, zo jij bent er snel bij dank je. Ik wil juist dat de gebruiker straks een keuze kan maken in wat er geprint gaat worden vandaar de listbox. Ik zelf doe altijd Ctrl L muis click selecteer zo de benodigde sheets en kan ze dan in 1 document opslaan als pdf. Dit laatste zou Keuzevenster dan over moeten nemen.

Mvg,

Stephan
 
Zet in de eigenschap van de listbox de 'Multiselect' op 'fmMultiselectMulti'.
Dat bedoel je?

De code nog even aanpassen.
Code:
Private Sub PDF_Click()
Dim x As Long
If MsgBox("Het lukt voor geen meter.", vbOKCancel, "Printen") = vbOK Then
 Me.Hide
   If Application.Dialogs(xlDialogPrinterSetup).Show Then
     For x = 0 To lstPrint.ListCount - 1
      If lstPrint.Selected(x) Then Sheets(lstPrint.List(x)).PrintPreview
     Next
   End If
  Me.Show
End If
End Sub
 
Laatst bewerkt:
In de eigenschappen stond het al op 'fmMultiselectMulti'. Het blijft hetzelfde. Ook in de print preview zie ik telkens maar 1 document. Telkens als ik de printpreview afsluit krijg ik het volgende geselecteerde blad. Ze worden wel geselecteerd maar daarna niet samen afgedrukt maar telkens als een nieuwe pagina geprint/ opgeslagen als pdf.
 
En als Pdf afdrukken worden de bladen niet apart aangemaakt?
Dan krijg je meerdere bladen van je Excel werkboek onder elkaar op 1 blad van je Pdf?
 
Ze worden altijd apart geprint of afgedrukt als pdf. Behahalve Ctrl linker muisknop en dan de sheets selecteren, dan doet het wat het moet doen. Maar dat is de bedoeling om het via de listbox te doen. De gebruikers zien straks niets van excel meer en verder is alles geblokkeerd.
 
Laat dat eens zien in een voorbeeld-bestand.
Ik ben het aan het reproduceren, maar de bladen worden hier gewoon apart afgedrukt.
Ook met Ctrl+bladen selecteren en/of als pdf af te drukken.
 
O ja ze moeten juist niet apart maar samen zoals geselecteerd. En dat doen ze hier niet.
 
Het lukt mij in jouw bestand ook niet om alles op een blad af te drukken met Ctrl +...
Waar zit het geheim dat het bij jou wel lukt.

Je hebt trouwens de aangepaste code er niet in staan.
 
Ook met de andere code werkt het niet. Ze verzamelen de te printen pagina's niet. Maar ik geef het niet op! alvast bedankt voor je inzet.
 
Het spijt me, je uitleg over bepaalde vragen is nul komma nul of heel summier.
Ik houd het maar bij onderstaande code als er geen betere uitleg wordt gegeven.

In onderstaande code worden de bladen die niet geprint moeten worden verborgen.
Vervolgens wordt er een Pdf bestand gemaakt van het bestand en de bladen weer zichtbaar gemaakt.
De rode tekst in de code moet je aanpassen naar wens.

Code:
Private Sub PDF_Click()
Dim x As Long, sh As Worksheet
If MsgBox("Het lukt voor geen meter.", vbOKCancel, "Printen") = vbOK Then
 Me.Hide
   If Application.Dialogs(xlDialogPrinterSetup).Show Then
         For x = 0 To lstPrint.ListCount - 1
          If lstPrint.Selected(x) = False Then Sheets(x + 1).Visible = False
         Next x
     ThisWorkbook.ExportAsFixedFormat 0, "[COLOR=#ff0000]c:\users\hsv\desktop\printje.pdf[/COLOR]", , , , , , 1
     For Each sh In Sheets
       sh.Visible = True
    Next sh
   End If
  Me.Show
End If
End Sub


Private Sub UserForm_Initialize()
 lstPrint.List = Array("Voorblad", "HSB-wand", "plat dak", "spouwmuur", "begane grondvloer")
End Sub
 
Harry, Het werkt dit is wat ik bedoel. ik heb nog een kleine aanpassing gedaan zodat ze kunnen printen zoals gewenst. Bedank voor je hulp.

Private Sub PDF_Click()
Dim x As Long, sh As Worksheet
If MsgBox("Het lukt voor geen meter.", vbOKCancel, "Printen") = vbOK Then
Me.Hide
If Application.Dialogs(xlDialogPrinterSetup).Show Then
For x = 0 To LstPrint.ListCount - 1
If LstPrint.Selected(x) = False Then Sheets(x + 1).Visible = False
Next x
ThisWorkbook.PrintOut
For Each sh In Sheets
sh.Visible = True
Next sh
End If
Me.Show
End If
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan