Avatar billede Sonne Juniormester
13. februar 2017 - 12:46 Der er 6 kommentarer og
1 løsning

Gem som PDF samt mandatory felt

Hej

Jeg har brug for lidt hjælp til VBA i Excel, da jeg har brug for, både en PDF knap som jeg hr oprettet med denne kode:
Private Sub cbSaveAsPDF_Click()

Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler

Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "yyyymmdd\_hhmm")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = strName & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

Men jeg har også brug for tre felter som skal udfyldes INDEN jeg kan gemme det som PDF
Avatar billede jakobdo Ekspert
13. februar 2017 - 13:02 #1
Er det ikke "bare" at tilføje check på de 3 felter inden du kører pdf koden?

Noget ala:

if felt1 is empty:
  alert("ERROR: Felt1 missing")
etc...

Dog ikke korrekt vba kode, men håber ideen kunne bruges.
Avatar billede Sonne Juniormester
13. februar 2017 - 13:18 #2
Hej Jacobdo

Jo hvis det bare at sætte det ind i toppen af koden inden SaveAfPDF, så er det helt fint. Men jeg har prøvet med;
(Ved godt det er BeforeSave, men kan ikke lige gennemskue, hvad jeg skal skrive i stedet for!)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Sheets("Sheet1").Range("B5").Value = "" Then
        MsgBox "Pls enter value in B5"
        Cancel = True 'cancels the save event
    End If
End Sub

Tak for hurtig kommentar
Avatar billede jakobdo Ekspert
13. februar 2017 - 13:27 #3
Jeg her ikke en VBA haj, men koder i mange andre sprog, så håber du har evnerne til resten. :)

Men...
Den kode du afvikler, når man trykker på "SAVE TO PDF", den må kalde en "funktion eller en stump" kode.
Allerede i den kode kan man vel i vba lave:

VALIDATE felt1
VALIDATE felt2
VALIDATE felt3

Hvis et af disse felter ikke er ok, så lave en "exit/stop yderligere kode afvikling" eller lign ?
Avatar billede store-morten Ekspert
13. februar 2017 - 16:04 #4
Prøv:
Private Sub cbSaveAsPDF_Click()

    If IsEmpty(Range("A4")) Or _
    IsEmpty(Range("A5")) Or _
    IsEmpty(Range("A6")) Then
   
        MsgBox "Husk at udfylde celle A4, A5 og A6", vbOKOnly + vbInformation
        Cancel = True
        Exit Sub
    End If

'Din kode

End Sub
Avatar billede Sonne Juniormester
13. februar 2017 - 17:19 #5
Hej Store-Morten

Perfekt, det virker bare med denne kode.

Tak, for en ikke VBA haj!

Sonne
Avatar billede store-morten Ekspert
14. februar 2017 - 07:54 #6
Velbekomme ;-)
Avatar billede jakobdo Ekspert
14. februar 2017 - 09:21 #7
Ideen er dog du markere Store-Mortens svar som en løsning, da det jo var ham der løste dit spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester