Hallo,
Ik heb een probleempje met mijn VBA-code.
Deze code word gebruikt bij een Excel bestand waar garantie formulieren worden ingevuld.
Hierbij zijn bepaalde cellen verplicht, en wordt het compleet ingevulde formulier opgeslagen als PDF.
Bij het opnieuw openen van het formulier worden wordt het garantie nummer met 1 verhoogd en de overige cellen leeggemaakt.
Dit gaat bij de meeste computers prima, echter bij enkele PC's waar als standaard printer een label printer staat ingesteld gaat het helemaal mis..
Nu word het PDF bestand wel in 1 pdf bestand opgeslagen maar worden er 9 pagina weergegeven.
Graag wil ik ook dat bij een andere type printers de complete pagina wordt weergegeven als 1 geheel en niet in 9 delen.
Bovenstaand is de code die ik tot nu toe altijd gebruikt heb.
Bekijk bijlage Garantie-formulier-voorbeeld.xlsm
Graag hoor ik van jullie hoe dit eventueel op te lossen is zonder een ander standaard printer in te stellen.
Ik heb een probleempje met mijn VBA-code.
Deze code word gebruikt bij een Excel bestand waar garantie formulieren worden ingevuld.
Hierbij zijn bepaalde cellen verplicht, en wordt het compleet ingevulde formulier opgeslagen als PDF.
Bij het opnieuw openen van het formulier worden wordt het garantie nummer met 1 verhoogd en de overige cellen leeggemaakt.
Dit gaat bij de meeste computers prima, echter bij enkele PC's waar als standaard printer een label printer staat ingesteld gaat het helemaal mis..
Nu word het PDF bestand wel in 1 pdf bestand opgeslagen maar worden er 9 pagina weergegeven.
Graag wil ik ook dat bij een andere type printers de complete pagina wordt weergegeven als 1 geheel en niet in 9 delen.
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim cl As Range
For Each cl In Sheets(1).Range("B5,D3,B14,G6,G7,G8,G9,G10,G14,G18,B27,C27,F27,H27,I33,I34,I35,I36,G38,G40")
If cl.Value = Empty Then
MsgBox "Cel " & cl.Address(False, False) & " is niet gevuld.", vbCritical, "Opslaan afgebroken"
Cancel = True: Exit Sub
End If
Next
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="P:\Aanvraag garantie\ " & Range("D3") & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False 'Dit zorgt er ervoor dat er een PDF bestand wordt aangemaakt.
End Sub
Private Sub Workbook_Open()
Dim c1 As Range
For Each c1 In Range("B5,B14,B21,B28,B29,B30,B31,C28,C29,C30,C31,G5,G6,G7,G8,G9,G10,G11,G14,G15,G16,G17,G18,G21,G22,G23,G24,B27,C27,F27,F28,F29,F30,F31,H27,H28,H29,H30,H31,I33,I34,I35,I36,G38,G39,G40")
c1 = "" 'Deze regel zorgt er voor dat de verplichte cellen worden geleegd.
Next
Sheets("Blad1").Range("D3") = Sheets("Blad1").Range("D3") + 1
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim cl As Range
For Each cl In Sheets(1).Range("B5,D3,B14,G6,G7,G8,G9,G10,G14,G18,B27,C27,F27,H27,I33,I34,I35,I36,G38,G40")
If cl.Value = Empty Then
MsgBox "Cel " & cl.Address(False, False) & " is niet gevuld.", vbCritical, "Printen afgebroken"
Cancel = True 'Deze regel zorgt voor het daadwerkelijk afbreken van het printen
Exit For
End If
Next
End Sub
Bovenstaand is de code die ik tot nu toe altijd gebruikt heb.
Bekijk bijlage Garantie-formulier-voorbeeld.xlsm
Graag hoor ik van jullie hoe dit eventueel op te lossen is zonder een ander standaard printer in te stellen.
Laatst bewerkt: