Macro excel sheet naar PDF

Status
Niet open voor verdere reacties.

CorKersten

Gebruiker
Lid geworden
2 feb 2018
Berichten
12
Macro excel sheet naar PDF opslaan op NAS-server

hallo ik ben nieuw sinds vandaag,
ik ben bezig met een macro die mijn excel sheet moet opslaan als pdf bestand.
naar een betreffende map op mijn bureaublad en de naam ophaalt uit diverse cellen.

ik krijg m maar niet werkend en kom er niet uit wat ik verkeerd doe.

ik werk met office 2016 op een iMac

dit is wat ik tot nu toe heb:


Code:
Public Sub pdftav()
Dim FacName As String

FacName = ActiveSheet.Range("D6") & Range("H38") & Range("E8") & Range("H38") & Range("E13").Value ' De macro haalt met dit command het factuurnummer op in de factuur, om deze later als naam voor het PDF-bestand te gebruiken.
       
If Dir("/Users/corkersten/Desktop/overeenkomst pdf" & FacName & ".pdf") <> "" Then
   MsgBox "Het bestand: " & FacName & ".pdf bestaat reeds"   ' Een controle om geen dubbel PDF-bestand te maken.
        ' De map waarin je de PDF-bestanden in wilt creëeren (bij mij FactuurMail) moet op voorhand aangemaakt zijn!!
       Exit Sub  'Verlaat de routine als het PDF-bestand reeds bestaat.
     Else
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        "/Users/corkersten/Desktop/overeenkomst pdf/" & FacName & ".pdf", Quality:= _
        xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Application.Goto Reference:="cor"

End If
End Sub


ik hoop dat iemand mij verder kan helpen..
 
Laatst bewerkt:
Probeer het eens zo. Plaats anders een relevant voorbeeld document:
Code:
Public Sub pdftav()
    Dim PDF As String
    
    [COLOR="#008000"]'De macro haalt met dit command het factuurnummer op in de factuur, om deze later als naam voor het PDF-bestand te gebruiken.[/COLOR]
    PDF = Environ("userprofile") & _
          "\Desktop\overeenkomst pdf\" & _
          ActiveSheet.Range("D6") & _
          Range("H38") & _
          Range("E8") & _
          Range("H38") & _
          Range("E13") & ".pdf"
    
    If Dir(PDF) <> "" Then
        MsgBox "Het bestand: " & PDF & " bestaat reeds", vbCritical [COLOR="#008000"]'Een controle om geen dubbel PDF-bestand te maken.[/COLOR]
        [COLOR="#008000"]'De map waarin je de PDF-bestanden in wilt creëeren (bij mij FactuurMail) moet op voorhand aangemaakt zijn!![/COLOR]
    Else
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF
        Application.Goto Reference:="cor"
    End If
End Sub
 
Laatst bewerkt:
Dat is een beetje TE relevant, er zit nog een wachtwoord op ;)
 
Er zat nog een foutje in de map toewijzing. Gebruik deze maar:
Code:
Public Sub pdftav()
    Dim PDF As String
    
    [COLOR="#008000"]'De macro haalt met dit command het factuurnummer op in de factuur, om deze later als naam voor het PDF-bestand te gebruiken.[/COLOR]
    PDF = Environ("userprofile") & _
          "\Desktop\overeenkomst pdf" & _
          ActiveSheet.Range("D6") & _
          Range("H38") & _
          Range("E8") & _
          Range("H38") & _
          Range("E13") & ".pdf"
    
    If Dir(PDF) <> "" Then
        MsgBox "Het bestand: " & PDF & " bestaat reeds" [COLOR="#008000"]'Een controle om geen dubbel PDF-bestand te maken.[/COLOR]
        [COLOR="#008000"]'De map waarin je de PDF-bestanden in wilt cre‘eren (bij mij FactuurMail) moet op voorhand aangemaakt zijn!![/COLOR]
    Else
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF
        Application.Goto Reference:="cor"
    End If
End Sub
 
pdf

hoi Edmoor,

ik krijg n foutmelding ik heb n screenshot gemaakt dan kun je zien waar hij de fout aangeeft.
(ik werk trouwens met een iMac ik weet niet of dat nog iets uitmaakt? en Office 2016)

Schermafbeelding 2018-02-02 om 18.21.37.png
 
Dat maakt nogal uit en kan ik niet bij helpen.
Op een Mac is de disk en pad aanduiding totaal anders.
Tevens werkt op een Mac lang niet alles in Visual Basic dat op Windows wel werkt.
Ik heb ook Office 2016, maar geen Mac.
 
Laatst bewerkt:
pdf

oke,
nou zover bedankt dan en ik hoop dat er iemand is anders mij verder kan helpen.
 
Vertel er bij een eventueel volgende vraag even bij dat je Office op een Mac gebruikt om misverstanden te voorkomen.
Heeft die versie ook een macro recorder?
Neem die actie dan eens op.
 
ik heb deze macro net opgenomen maar dat is alleen opslaan als pdf met een aangegeven naam maar die wil ik juist uit de betreffende cellen halen.

Schermafbeelding 2018-02-02 om 18.32.25.png
 
Nogmaals, ik weet niets van het gebruik van VBA op een Mac maar het lijkt erop dat in dit geval alleen het pad gebruik verschilt.
Ik zou dit eens proberen:
Code:
Public Sub pdftav()
    Dim PDFnam As String
    Dim PDFpad As String
    
    PDFpad = "/Users/corkersten/Dektop/overeenkomst pdf/"
    PDFnam = Range("D6") & _
             Range("H38") & _
             Range("E8") & _
             Range("H38") & _
             Range("E13") & ".pdf"
    
    If Dir(PDFpad & PDFnam) <> "" Then
        MsgBox "Het bestand: " & PDFpad & PDFnam & " bestaat reeds", vbCritical
    Else
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFpad & PDFnam
        Application.Goto Reference:="cor"
    End If
End Sub
 
Ik heb ook een Mac en doe dit als volgt:

Sub Opslaan_PDF()
' Opslaan als PDF in facturen map
ActiveWorkbook.SaveAs Filename:= _
ChDir "Macintosh HD:Users:sanderscheepstra:Library:Admin 18:Facturen18:"
NieuwFact = Range("J5").Value & Range("D2").Value & ".pdf" 'Uit deze cellen haalt hij de naam en factuurnummer
ActiveWorkbook.SaveAs NieuwFact, FileFormat:=xlPDF
Opslaan_factuur
End Sub

Wellicht dat je hier iets mee kunt...
 
Laatst bewerkt:
De ":" die je gebruikt is wel afhankelijk van een instelling.
Controleer daarom wel de Application.PathSeparator
 
ik heb inmiddels een afbeelding in de koptekst neergelegd en die als 'achtergrond/watermerk' gezet.

deze neemt hij wel mee met het opslaan als PDF dus ben er nu wel uit en tevreden mee.

dank allen voor het meedenken.
 
ik heb de vraag nog even open gezet voor de volgende vraag:

de bovenstaande macro wordt opgeslagen op mijn desktop, (MAC)
maar ik krijg het niet voor elkaar om het op te slaan op mijn netwerkschijf, ik kom er niet uit om de juiste plek aan te geven.

Bekijk bijlage proef.xlsm
 
Kun je daar niet achter komen met de macro recorder?
En anders de eigenschappen van het document bekijken die je handmatig op de juiste plek op hebt geslagen.
 
hoi Xammy,

ik heb een bestand opgeslagen en vervolgens de directory opgezocht via Finder info zie schermafbeelding.

ik heb toen in de macro geprobeerd dit in te voeren maar geeft fout aan,
ik weet zo niet wat ik verkeerd doe. (dit is mijn code:)

Code:
Sub SaveActiveSheetAsPDFInMacExcel2016()
    
    Dim FileName As String
    Dim FolderName As String
    Dim Folderstring As String
    Dim FilePathName As String

    
    ActiveSheet.PageSetup.Orientation = ActiveSheet.PageSetup.Orientation

   
    FolderName = "PDFSaveFolder"
    
    FileName = " " & Range("E13") & Range("H38") & Range("D6") & Range("H38") & Range("E8") & ".pdf"

    Folderstring = CreateFolderinMacOffice2016(NameFolder:=FolderName)
    FilePathName = Folderstring & Application.PathSeparator & FileName

  
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePathName, Quality:=xlQualityMinimum, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False
  
    MsgBox "You find the PDF file in this location : " & FilePathName
End Sub

Function CreateFolderinMacOffice2016(NameFolder As String) As String
   
    Dim OfficeFolder As String
    Dim PathToFolder As String
    Dim TestStr As String

    OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
    OfficeFolder = Replace(OfficeFolder, "/smb://corkersten", "") & _
        "Cor Kersten/Cor/Boekhouding/EXCEL/COR KERSTEN.NL/2018/Overeenkomsten_PDF/"

    PathToFolder = OfficeFolder & NameFolder

    On Error Resume Next
    TestStr = Dir(PathToFolder, vbDirectory)
    On Error GoTo 0
    If TestStr = vbNullString Then
        MkDir PathToFolder
      
    End If
    CreateFolderinMacOffice2016 = PathToFolder
End Function

Schermafbeelding.png
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan