'Excel-VBA/variabele selectie PDF maker' toevoegen
This commit is contained in:
parent
885ee78b65
commit
303ee5e0e7
1 changed files with 148 additions and 0 deletions
148
Excel-VBA/variabele selectie PDF maker
Normal file
148
Excel-VBA/variabele selectie PDF maker
Normal file
|
@ -0,0 +1,148 @@
|
|||
Sub MRL_Selectie()
|
||||
'voorbeelden:
|
||||
'https://www.wallstreetmojo.com/vba-variable-range/
|
||||
|
||||
'variabelen maken
|
||||
|
||||
'voor de teller
|
||||
Dim vCount As Variant 'De view couter
|
||||
Dim xScreen As Boolean
|
||||
Dim I As Long
|
||||
|
||||
'Start
|
||||
LInput:
|
||||
vCount = Sheets("Printen").Range("c8").Value
|
||||
If TypeName(vCount) = "Boolean" Then Exit Sub
|
||||
|
||||
'Controle op fouten
|
||||
If (vCount = "") Or (Not IsNumeric(vCount)) Or (vCount < 1) Then
|
||||
MsgBox "Ergens gaat iets fout, neem contact op met Mathijs", vbInformation, "Oeps"
|
||||
GoTo LInput
|
||||
Else
|
||||
|
||||
'Werkblad berekenen
|
||||
Application.Calculate
|
||||
|
||||
|
||||
xScreen = Application.ScreenUpdating
|
||||
Application.ScreenUpdating = False
|
||||
For I = Sheets("Printen").Range("c7").Value To vCount
|
||||
Sheets("Printen").Range("c6").Value = I
|
||||
|
||||
Call MRL_PDF_MAKER
|
||||
'ActiveSheet.PrintOut
|
||||
Next
|
||||
'ActiveSheet.Range("c6").ClearContents
|
||||
Application.ScreenUpdating = xScreen
|
||||
End If
|
||||
Worksheets("Printen").Activate
|
||||
End Sub
|
||||
|
||||
Sub MRL_PDF_MAKER()
|
||||
Dim sh As Worksheet
|
||||
Dim FileName As String
|
||||
|
||||
Dim printview As Range
|
||||
Dim vanx As Integer
|
||||
Dim vany As Integer
|
||||
Dim totx As Integer
|
||||
Dim toty As Integer
|
||||
Dim rngx As Integer
|
||||
Dim rngy As Integer
|
||||
|
||||
If ActiveWindow.SelectedSheets.Count > 1 Then
|
||||
MsgBox "There is more then one sheet selected," & vbNewLine & _
|
||||
"ungroup the sheets and try the macro again"
|
||||
Else
|
||||
|
||||
|
||||
'Werkblad berekenen
|
||||
Application.Calculate
|
||||
|
||||
'variabelen waarden geven
|
||||
vanx = Sheets("Printen").Range("d2").Value
|
||||
vany = Sheets("Printen").Range("e2").Value
|
||||
totx = Sheets("Printen").Range("d3").Value
|
||||
toty = Sheets("Printen").Range("e3").Value
|
||||
|
||||
'waarde controleren
|
||||
'NTB
|
||||
|
||||
'berekenenvam:
|
||||
'tussenwaarde's
|
||||
rngx = totx - vanx + 1
|
||||
rngy = toty - vany + 1
|
||||
Worksheets("Planning").Activate
|
||||
'de printview rng instellen
|
||||
Set printview = Cells(vany, vanx).Resize(rngy, rngx)
|
||||
|
||||
'de printview selecteren
|
||||
|
||||
printview.Select
|
||||
|
||||
|
||||
|
||||
'Call the function with the correct arguments
|
||||
'For a fixed range use this line
|
||||
FileName = MRL_Create_PDF(Source:=Selection, _
|
||||
FixedFilePathName:=Sheets("Printen").Range("C9").Value _
|
||||
& Sheets("Printen").Range("C10").Value _
|
||||
& Sheets("Printen").Range("C11").Value & ".pdf", _
|
||||
OverwriteIfFileExist:=True, _
|
||||
OpenPDFAfterPublish:=True)
|
||||
'For the selection use Selection in the Source argument
|
||||
'FileName = MRL_Create_PDF(Source:=Selection)
|
||||
|
||||
'For a fixed file name use this in the FixedFilePathName argument
|
||||
'FixedFilePathName:="C:\Users\Ron\Test\YourPdfFile.pdf"
|
||||
|
||||
If FileName <> "" Then
|
||||
'Ok, you find the PDF where you saved it
|
||||
'You can call the mail macro here if you want
|
||||
Else
|
||||
MsgBox "Not possible to create the PDF, possible reasons:" & vbNewLine & _
|
||||
"Microsoft Add-in is not installed" & vbNewLine & _
|
||||
"You Canceled the GetSaveAsFilename dialog" & vbNewLine & _
|
||||
"The path to Save the file in arg 2 is not correct" & vbNewLine & _
|
||||
"You didn't want to overwrite the existing PDF if it exist"
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Function MRL_Create_PDF(Source As Object, FixedFilePathName As String, _
|
||||
OverwriteIfFileExist As Boolean, OpenPDFAfterPublish As Boolean) As String
|
||||
Dim FileFormatstr As String
|
||||
Dim Fname As Variant
|
||||
|
||||
If FixedFilePathName = "" Then
|
||||
'Open the GetSaveAsFilename dialog to enter a file name for the pdf
|
||||
FileFormatstr = "PDF Files (*.pdf), *.pdf"
|
||||
Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _
|
||||
Title:="Create PDF")
|
||||
|
||||
'If you cancel this dialog Exit the function
|
||||
If Fname = False Then Exit Function
|
||||
Else
|
||||
Fname = FixedFilePathName
|
||||
End If
|
||||
|
||||
'If OverwriteIfFileExist = False we test if the PDF
|
||||
'already exist in the folder and Exit the function if that is True
|
||||
If OverwriteIfFileExist = False Then
|
||||
If Dir(Fname) <> "" Then Exit Function
|
||||
End If
|
||||
|
||||
'Now the file name is correct we Publish to PDF
|
||||
On Error Resume Next
|
||||
Source.ExportAsFixedFormat _
|
||||
Type:=xlTypePDF, _
|
||||
FileName:=Fname, _
|
||||
Quality:=xlQualityStandard, _
|
||||
IncludeDocProperties:=True, _
|
||||
IgnorePrintAreas:=False, _
|
||||
OpenAfterPublish:=OpenPDFAfterPublish
|
||||
On Error GoTo 0
|
||||
|
||||
'If Publish is Ok the function will return the file name
|
||||
If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
|
||||
End Function
|
Loading…
Reference in a new issue