Alvast de macro:
Vanwaar de PDF verwerking begint
Code:
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If PrintPDFType > 0 Then ' alleen PDF maken
If PDFKleurOfCheckBox = True Then Worksheets("Blad1").PageSetup.BlackAndWhite = True: MsgBox ("0 uit") ' zwart-wit aan
If PDFKleurOnCheckBox = True Then Worksheets("Blad1").PageSetup.BlackAndWhite = False: MsgBox ("0 aan") ' kleur aan
Excel_File_Maken
Check_Excel_Bestaat
End If
End With
If PrintPDFType > 0 Then GoTo Door9 ' alleen PDF maken
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Volgende sub± Excel File Maken:
Code:
Private Sub Excel_File_Maken() ' revisie [22-01-2025] maakt een extra WerkBlad aan
Dim c01 As String, MJOBJaar As Integer, i As Integer, SelRange As String
Application.DisplayAlerts = False
Worksheets("Blad1").Activate ' activeert wb DBase cel A1
If PDFKleurOfCheckBox = True Then Worksheets("Blad1").PageSetup.BlackAndWhite = True: MsgBox ("1 uit") ' zwart-wit aan
If PDFKleurOnCheckBox = True Then Worksheets("Blad1").PageSetup.BlackAndWhite = False: MsgBox ("1 aan") ' kleur aan
[CODE]Volgende Sub Check Excel Bestaat:
Private Sub Check_Excel_Bestaat() ' revisie [20-02-2023]
Dim wb As Workbook, fName As String, TB As Workbook, i As Integer, bOpen As Boolean, fPath As String, sFullName As String, strOld As String ', MijnNaam As String
Set TB = ThisWorkbook ' object verwijzing naar TB van (dit) file
fPath = ActiveWorkbook.Worksheets("Control").Range("D6") ' Path waar (dit) excel file staat
If PrintPDFType = 2 Then
If Pagina = 1 Then fName = ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag1" & ".xls" ' Path en Naam + Pag1 + extensie
If Pagina = 2 Then fName = ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag2" & ".xls" ' Path en Naam + Pag1 + extensie
If Pagina = 3 Then fName = ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag3" & ".xls" ' Path en Naam + Pag1 + extensie
End If
MijnNaam = fName
sFullName = Dir(fPath & IIf(Right(fPath, 1) <> "\", "\", "") & fName & "*") ' zoek in dit Path dit File
If Not Right(sFullName, 5) Like "*.xls" Then
Do
If sFullName = "" Then MsgBox "Dat File " & fPath & IIf(Right(fPath, 1) <> "\", "\", "") & fName & "*" & " als xls-file bestaat niet eens": Exit Sub ' foutje bedankt
If Not (Right(sFullName, 5) Like "*.xls") Then sFullName = Dir(ActiveWorkbook.Worksheets("Control").Range("L5")) ' zoek naar volgende file
GoTo Door
Loop
fName = sFullName ' nu heeft fName een extensie
MsgBox ("Not")
End If
i = InStrRev(fName, ".", -1) ' zoekt de positie v/d extensie punt vanaf rechts
If i = 0 Then MsgBox ("File heeft geen extensie!"): Exit Sub ' fileName heeft geen Extensie
MijnNaam = Left(fName, i - 1) ' geeft var. MijnNaam de fileName zonder extensie voor PDFMaken
On Error Resume Next
wb = Nothing: Set wb = Workbooks(fName) ' maakt wb leeg en geeft hem de naam van dit file (fName)
bOpen = Not (wb Is Nothing) ' file al open? onthouden voor straks, anders straks sluiten
If Not bOpen Then Set wb = Workbooks.Open(fPath & IIf(Right(fPath, 1) <> "\", "\", "") & fName)
On Error GoTo 0
If wb Is Nothing Then MsgBox ("File is niet te vinden!!"): Exit Sub ' als wb komt niet voor exit sub
Application.CutCopyMode = False ' niet in de modus Knippen of Copieeren
strOld = Application.ActivePrinter ' slaat naam printer op, voor terugzetten
PDF_Maken ' sub PDF maken
If Not bOpen Then wb.Close False ' als niet bOpen dan close het file, anders straks file open staan
Application.ActivePrinter = strOld ' zet active printer weer terug!
Door:
End Sub
With Worksheets("Blad1")
If PrintType = "Individueel" Then ' But2 één bepaalde pagina printen
ActiveWorkbook.Worksheets("Blad1").Range("A1").Select ' zet active cel op A1
If Pagina = 1 Then .Range("A1:H42").Select: SelRange = "A1:H42" ' SelRange = selectie
If Pagina = 2 Then .Range("A43:H83").Select: SelRange = "A43:H83" ' SelRange = selectie
If Pagina = 3 Then .Range("A84:H94").Select: SelRange = "A84:H94" ' SelRange = selectie
End If
.Range(SelRange).Copy
End With
If PrintPDFType = 2 Then
If Pagina = 1 Then c01 = ActiveWorkbook.Worksheets("Control").Range("D6") & ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag1" & ".xls" ' Path en Naam + Pag1 + extensie
If Pagina = 2 Then c01 = ActiveWorkbook.Worksheets("Control").Range("D6") & ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag2" & ".xls" ' Path en Naam + Pag1 + extensie
If Pagina = 3 Then c01 = ActiveWorkbook.Worksheets("Control").Range("D6") & ActiveWorkbook.Worksheets("Control").Range("D10") & "Pag3" & ".xls" ' Path en Naam + Pag1 + extensie
End If
With ActiveWorkbook.Sheets.Add ' maakt een nieuw wb aan
.Range("A1").Select
.Range("A1").PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False ' maakt klembord leeg
.Columns("A").ColumnWidth = 4 ' kolom A in nwe file
.Columns("B").ColumnWidth = 12 ' kolom B in nwe file
.Columns("C").ColumnWidth = 20 ' kolom C in nwe file
.Columns("D").ColumnWidth = 10 ' kolom D in nwe file
.Columns("E").ColumnWidth = 12.67 ' kolom E in nwe file
.Columns("F").ColumnWidth = 22.22 ' kolom F in nwe file
.Columns("G").ColumnWidth = 6.11 ' kolom G in nwe file
.Columns("H").ColumnWidth = 52.89 ' kolom H in nwe file
.Copy ' maakt een kopie van dit nieuwe wb
With ActiveWorkbook ' met nieuwe wb
With ActiveSheet.PageSetup ' zet de juiste marges neer voor nieuwe file
.Orientation = xlLandscape '
https://www.ozgrid.com/forum/forum/help-forums/excel-general/139429-pagesetup-and-papersize-macro
.PaperSize = xlPaperA4
.LeftMargin = Application.InchesToPoints(0.2)
.RightMargin = Application.InchesToPoints(0.2)
.TopMargin = Application.InchesToPoints(0.2)
.BottomMargin = Application.InchesToPoints(0.2)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
If PDFKleurOfCheckBox = True Then .BlackAndWhite = True: MsgBox ("2 uit") ' zwart-wit aan EIGENSCHAP WORDT NIET ONDERSTEUNT
If PDFKleurOnCheckBox = True Then .BlackAndWhite = False: MsgBox ("2 aan")
End With
.SaveCopyAs c01 ' met nieuwe wb, slaat op als file
.Close ' met nieuwe wb, sluit dit nieuw file, belangrijk omdat onder Check Excel Bestaat
End With ' een Path moet worden ingelezen van wb Control.Range("D6")!
.Delete ' met nieuwe wb, deze verwijderen
End With
End Sub
[/CODE]