Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Macro maken voor printen  (gelezen 29062 keer)

0 leden en 1 gast bekijken dit topic.

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Macro maken voor printen
« Gepost op: 07 april 2020, 09:11:49 »
Beste,

Ik heb al van alles geprobeerd om mijn werkblad te printen via macro maar krijg het niet voor elkaar.
De macro gaat voor meerdere tabbladen werken maar stel ik per tabblad met en knop in.
Ik zou graag een macro hebben waar ik de range van het werkblad kan aangeven.
De meeste macro's printen direct uit maar wil dat hij stopt zodat ik zelf op de knop "afdrukken" kan drukken.

Alvast bedankt voor jullie reactie


Offline Digicafé

  • Volledig lid
  • **
  • Berichten: 234
  • Geslacht: Man
Re: Macro maken voor printen
« Reactie #1 Gepost op: 07 april 2020, 09:20:05 »
Even snelle reactie om je op weg te zetten.


  • maak 2 dialoogboxen waar je telkens een cel kan ingeven : "A1"... stijl ;
  • bekijk het 'PrintOut' commando (NL = blijkbaar hetzelfde ?) en je zal zien dat je de PrintArea kan definiëren.
Wil je een volledig uitgewerkt vb. dan even een seintje (ik gebruik wel een Engelstalige versie van Excel)

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #2 Gepost op: 07 april 2020, 09:31:15 »
Philip,

Graag een uitgewerkte versie.
Ik snap er zo ng niet veel van.

Alvast bedankt

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Macro maken voor printen
« Reactie #3 Gepost op: 07 april 2020, 09:47:44 »
Zoiets?
Printknop op blad 1 soort.

Offline Digicafé

  • Volledig lid
  • **
  • Berichten: 234
  • Geslacht: Man
Re: Macro maken voor printen
« Reactie #4 Gepost op: 07 april 2020, 09:53:37 »

Sub printen()
Dim co11, col2 As String
Dim printgebied As String
col1 = InputBox("Geef coordinaat 1")
col2 = InputBox("Geef nu tweede coordinaat")
printgebied = col1 & ":" & col2
Worksheets("Sheet1").Activate
ActiveSheet.PageSetup.PrintArea = printgebied
'print preview
ActiveSheet.PrintPreview
'effektief printen
'ActiveSheet.PrintOut
End Sub


Je snapt de manier van werken wel hé ... code uiteraard aanpassen naar eigen wens

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #5 Gepost op: 07 april 2020, 12:07:03 »
Beste,

Bedankt voor jullie reactie.
De code werkt goed maar nog niet helemaal wat ik bedoelde, ben misschien niet helemaal duidelijk geweest.

In zou in de code aan willen geven welke cellen ik wil printen bv A1 t/m M49
Ik zou dan alleen nog op de knop "printen of afrukken" willen drukken op de plaats waar je normaal de printer, staand/liggend, kleur, .... enz kunt kiezen
Dit omdat het bestand ook bij meerdere collega's gaat draaien.

Ik zie ook als ik op de knop "Opslaan als xlsm" druk dat hij alleen het tabblad opslaat, ik zou dan graag dat hij het hele bestand op slaat.

Alvast bedankt

Offline Digicafé

  • Volledig lid
  • **
  • Berichten: 234
  • Geslacht: Man
Re: Macro maken voor printen
« Reactie #6 Gepost op: 07 april 2020, 12:25:58 »
Nu snap ik idd. niet meer wat je precies wil : de eerste vraag was naar een macro waarmee je de range die je wil printen "kon aangeven".
Nu zeg je dat je die range niet moet kunnen aangeven, maar dat die vast in de code mag staan.
Dat maakt het enkel makkelijker uiteraard.. als de printarea op een sheet gedefinieerd is (mag zelfs interactief vanop de sheet) zal PrintOut - funktie die gebruiken.  Dat moet dus zelfs niet in de code staan.


En als alles zo vast staat, waarom zou je dan eigenlijk nog een knop willen om te printen ?  Laat de gebruiker dan gewoon 'Print' uit het Excel menu selecteren...

Offline opabrommer@525

  • Nieuw lid
  • Berichten: 2
  • Geslacht: Man
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #7 Gepost op: 07 april 2020, 12:40:33 »
voor het opslaan probeer eens
strBestand = ThisWorkbook.Name
 intLen = Len(strBestand)
 strBestand = Left(strBestand, intLen - 5)
 
 strPath = ThisWorkbook.FullName
 
 intLen1 = Len(strPath)
 strPath = Left(strPath, intLen1 - intLen)
 ActiveWorkbook.SaveAs Filename:=strPath & strBestand, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Macro maken voor printen
« Reactie #8 Gepost op: 07 april 2020, 12:45:09 »
Voor deze
Citaat
Ik zie ook als ik op de knop "Opslaan als xlsm" druk dat hij alleen het tabblad opslaat, ik zou dan graag dat hij het hele bestand op slaat.
verwijder volgende lijn uit je code.
ActiveSheet.Copy
En voor je print code
Sub afdrukken()
    ActiveSheet.PageSetup.PrintArea = "A1:M49"
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
End Sub
@opabrommer@525, plaats uw code tussen codetags aub,dit kan je doen met het # teken.
@Digicafé, Ts is idd kampioen in het veranderen van gedacht. ::) ;)

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #9 Gepost op: 07 april 2020, 13:17:11 »
Beste Dotchie,

De print doet het zo goed!!

Bij opslaan in exel krijg ik nog de volgende foutmelding:

.SaveAs Filename:=sFolderPathForSave & "\ " & Range("d28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled[/color]

in onderstaande macro:

Sub opslaanexcel()
Application.ScreenUpdating = False
Set dlgSaveFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgSaveFolder
.Title = "Selecteer een Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo CancelFolderSelection
sFolderPathForSave = .SelectedItems(1)
End With
Set dlgSaveFolder = Nothing
With ActiveWorkbook
    .SaveAs Filename:=sFolderPathForSave & "\ " & Range("d28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled[/color]
    .Close savechanges:=False
End With
CancelFolderSelection:
Application.ScreenUpdating = True
End Sub

Offline Digicafé

  • Volledig lid
  • **
  • Berichten: 234
  • Geslacht: Man
Re: Macro maken voor printen
« Reactie #10 Gepost op: 07 april 2020, 14:00:04 »
Ik ben altijd verrast hoe vaak men probeert code te schrijven voor iets dat Excel out-of-the-box gewoon DOET, met een ingebouwde functie  !

fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName,fileFilter:="Excel Files (*.xls), *.xls")
If fileSaveName <> False Then
MsgBox "Save as " & fileSaveName
End If

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Macro maken voor printen
« Reactie #11 Gepost op: 07 april 2020, 14:03:33 »
Citaat
Bij opslaan in exel krijg ik nog de volgende foutmelding:
Verwijder
[/color]

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #12 Gepost op: 07 april 2020, 14:56:05 »
Beste Philiep,

[/color] staat niet in de marcro, deze is er ingekomen omdat ik de regel waar een foutmelding op komt een andere kleur wilde geven maar lukt niet en zette dit in de regel en ben ik vergeten weg te halen.

Offline Ex-lid

  • Oplosser
  • ****
  • Berichten: 670
  • Geslacht: Man
  • dit lid is verbannen
Re: Macro maken voor printen
« Reactie #13 Gepost op: 07 april 2020, 15:03:15 »
Deze werkt bij mij
Sub opslaanexcel()
Application.ScreenUpdating = False
Set dlgSaveFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgSaveFolder
.Title = "Selecteer een Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo CancelFolderSelection
sFolderPathForSave = .SelectedItems(1)
End With
Set dlgSaveFolder = Nothing
With ActiveWorkbook
    .SaveAs Filename:=sFolderPathForSave & "\ " & Range("D28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    .Close savechanges:=False
End With
CancelFolderSelection:
Application.ScreenUpdating = True
End Sub

Offline Wilbert

  • Lid
  • *
  • Berichten: 37
  • Oplossing.be
Re: Macro maken voor printen
« Reactie #14 Gepost op: 07 april 2020, 15:32:32 »
Beste Philiep,

Bij mij blijft hij in regel:

.SaveAs Filename:=sFolderPathForSave & "\ " & Range("D28").Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled
een fout geven

 


www.combell.com