Excel blad als pdf opslaan in map zonder gehele pad op te geven

Status
Niet open voor verdere reacties.

CH1988

Gebruiker
Lid geworden
14 sep 2010
Berichten
45
Hallo,

Graag wil ik een werkblad in mijn Excel document op slaan als pdf in een bepaalde map zonder het totale pad op te geven. Is dit überhaupt mogelijk? :confused:

Onderstaande code die ik vond werkt prima, maar zou ik graag uitbreiden met de mogelijkheid een map op te geven,
zodat gebruiker alleen maar op de knop hoeft te drukken om pdf op te slaan.

Het betreffende Excel document is een basis document. Bij elke nieuwe order wordt het Excel document opgeslagen met een unieke naam in een aparte ordermap.

In de ordermap bevinden zich verschillende submappen. Mijn wens is om de pdf in 1 van die supmappen op te slaan. Dus iets in de trant van
...../orders/order2018.10/pdf bestanden

Mapje "order2018.10" is dan de locatie van het Excel document.
Pdf zou dan moeten komen in mapje "pdf bestanden".



Code:
Sub PV_Opslaan()

Dim MyPath As String
Dim MyFileName As String

Application.DisplayAlerts = False

MyFileName = ActiveSheet.Range("P10").Value
    If Not Right(MyFileName, 4) = ".pdf" Then MyFileName = MyFileName & ".pdf"
    
    With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Select a Folder"
    .AllowMultiSelect = False
    .InitialFileName = MyFileName
    If .Show <> -1 Then GoTo NextCode
    MyPath = .SelectedItems(1) & "\"
    End With
    
NextCode:
    If MyPath = "" Then GoTo Cancel
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF
    
    
Cancel:
    Application.DisplayAlerts = True
End Sub
 
Probeer het eens zo:
Code:
MyFileName = ThisWorkbook.Path & "\" & ActiveSheet.Range("P10").Value
 
edmoor,

Bedankt voor je reactie. Echter wil ik niet de naam van het bestand aanpassen, dat gaat namelijk al goed.

Ik wil de pdf automatisch opslaan in een map.

De map (map 1) waar de pdf in moet komen te staan staat in dezelfde map (map 2) waarin het Excel bestand staat.
Ik wil dus de locatie van de Excel uitlezen en daar de locatie van de map (map 1) waar de pdf in moet komen te staan aan toevoegen, en dat als path gebruiken.
 
En dat is precies wat ik liet zien.
 
Zou je dan kunnen toelichten hoe ik de code moet aanpassen?

Als ik de code vereenvoudig en er onderstaande van maak, wordt er automatisch een pdf opgeslagen in dezelfde map als de Excel en heeft deze pdf dezelfde naam als het Excel document. Maar geen van beide is de bedoeling. :(


Code:
Sub PV_Opslaan()


Dim MyFileName As String

Application.DisplayAlerts = False

MyFileName = ThisWorkbook.Path & "\" & ActiveSheet.Range("P10").Value

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF
    

End Sub
 
Op deze manier:
Code:
Sub PV_Opslaan
    Application.DisplayAlerts = False
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF FileName:=ThisWorkbook.Path & "\" & ActiveSheet.Range("P10").Value
    Application.DisplayAlerts = True
End Sub
 
Dit resulteert in een compileerfout.
 

Bijlagen

  • Knipsel.JPG
    Knipsel.JPG
    29,4 KB · Weergaven: 88
Heb nog weinig ervaring met VBA, maar probeer wel zoveel mogelijk zelf uit te zoeken.


Het begint er op te lijken, maar gaat nog niet helemaal goed.

Mappen structuur van hoogste niveau naar laagste is als volgt;

Map orders2018
Map order2018.10 (hier staat Excel bestand in)
Map pdf (hier moet pdf in komen te staan)

Met de code die ik zojuist van je kreeg wordt de pdf opgeslagen in de map orders (2 niveaus te hoog).
Naam van de pdf is nu order2018.10 + waarde uit cel P10, dit moet zijn: pdf + waarde uit cel P10.
 
Wat er staat is precies wat je vroeg:
ThisWorkbook.Path & "" & ActiveSheet.Range("P10").Value

Die ThisWorkbook.Path is het pad waar het Excel document staat.
Wat er in P10 staat kan ik uiteraard niet zien.
 
Laatst bewerkt:
Het gebruik van een . in de naam van een map mag wel maar is niet echt handig. De . is bedoeld als separator om de extensie makkelijk te kunnen vinden net als de \ om eenvoudig de mappenstructuur te splitsen. Het zal de oplossing niet zijn maar geeft toch wat stof tot nadenken.
 
Na wat gepuzzel ben ik er uit gekomen :d

In cel P10 staat de naam die het pdf document moet krijgen.
In cel P13 staat de naam van de map waar de pdf in moet komen.

Dit is de code geworden:

Code:
Sub PV_Opslaan()
    Application.DisplayAlerts = False
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ThisWorkbook.Path & "\" & ActiveSheet.Range("P13").Value & "\" & ActiveSheet.Range("P10").Value
    Application.DisplayAlerts = True
End Sub

Allen dank voor de support! :thumb:
 
Dan kan het ook zo:

Code:
Sub PV_Opslaan()
    ActiveSheet.ExportAsFixedFormat 0, ThisWorkbook.Path & "\orders" & year(date) & "\order" & format(date,"yyyy ") & cells(10,16) 
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan