Range aan pdf toevoegen

Status
Niet open voor verdere reacties.

Jonathan1

Gebruiker
Lid geworden
23 jul 2020
Berichten
52
Beste,

In een Excel bestand wil ik dat het werkbook door middel van een macro bepaalde cellen in een pdf zet en deze op een bepaalde directory plaatst. Hij moet de map ook zelf aanmaken.
Tot voor kort maakte hij naar behoren de map correct aan, echter zet hij plots de pdf in een andere directory (Documents). Toch maakt hij de juiste mappen aan.

Tevens lukt het mij niet om een Excel een pdf te maken waarin alleen die specifieke cellen omgezet worden, laat staan dat deze cellen op 1 blad gezet worden. Als ik een .Range gebruik krijg ik foutmeldingen. Op de een of andere manier lukt het mij niet.
Kan iemand mij hierbij helpen?

Ik heb nu onderstaande code:
Code:
padpdf = "C:\Users\Jon\Documents\Excel tests\Logboek\Pdf\" & Jaar & "\" & Maand & "\"
PdfName = Padpfd & Dag & "-" & Maand1 & "-" & Jaar
   CreateObject("shell.application").Namespace("C:").NewFolder "Users\Jon\Documents\Excel tests\Logboek\Pdf\" & Jaar & "\" & Maand & "\"

    
    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfName, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

Deze informatie haalt hij uit een formulier.
Alvast bedankt.
 
Plaats een voorbeeld bestandje en geef aan om welke range het gaat.
 
Dat zijn geen ranges maar tekstvakken.
 
Kunnen die tekst vakken niet overgenomen worden in een pdf?
Ik kan de tekst vakken eventueel ook weg halen.
 
Dat gaat alleen door gebruiken te maken van de Acrobat API.
 
Ik ga de tekst vakken verwijderen en hier lege cellen van maken. Maar hoe kan ik ze dan in een pdf krijgen?
 
Door de range op te geven.
Bijvoorbeeld:
Code:
Range("U2:AU54").ExportAsFixedFormat...
 
Top!
Dit lukt voor de eerste sheet, maar nu is het de bedoeling dat hij ook een andere range neemt bij de andere sheet.
Welke code heb ik hiervoor nodig?

2de probleem: hij maakt de pdf niet in de opgegeven map. Hij zet hem in de documenten map zonder dat hij de datum als naam opslaat. Dat deed hij eerder wel.
Waar zit de fout in de code?
 
Je kan maar 1 range opgeven.
Daarnaast zie ik in je code bij het maken van de PDF nergens dat je een pad opgeeft en ook geen naam voor het bestand:
Code:
Sub SelectieAlsPdf()
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfName, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
 
Hij moet de mappen zelf aanmaken. Dat doet hij nog steeds, hij maakt een map "jaar" aan, daarin een map "maand" en dan moet hij daar de pdf in zetten en dat doet hij niet. hij plaats de pdf in de algemene map documenten.
Code:
padpdf = "C:\Users\Jon\Documents\Excel tests\Logboek\Pdf\[COLOR="#DAA520"]" & Jaar & "\" & Maand & "\"[/COLOR]
PdfName = Padpfd & Dag & "-" & Maand1 & "-" & Jaar
   CreateObject("shell.application").Namespace("C:").NewFolder "Users\Jon\Documents\Excel tests\Logboek\Pdf\[COLOR="#DAA520"]" & Jaar & "\" & Maand & "\"[/COLOR]

Of is deze code fout?
 
Laatst bewerkt:
Als die code werkt dan werkt 'ie.
Maar dan moet je wel de variabele PdfName Public declareren in een Module.
 
Is het rode gedeelte niet foutief?
Code:
PdfName = Pad[COLOR=#ff0000]pfd[/COLOR]
 
Scherp :thumb:
 
Top!
Dit lukt voor de eerste sheet, maar nu is het de bedoeling dat hij ook een andere range neemt bij de andere sheet.
Welke code heb ik hiervoor nodig?

zorg dat je per sheet het afdrukbereik hebt bepaald.
vervolgens selecteer je beide sheets
Code:
Sheets(Array("Sheet nummer 1", "Sheet nummer 2")).Select
Dan
Code:
Sheets("Sheet nummer 2").ExportAsFixedFormat ... etc
nu heb je 1 pdf met 2 pagina's
Selecteer tenslotte weer 1 sheet
Code:
Sheets("Sheet nummer 2")).Select
 
Het is gelukt!
@HSV: daar zat inderdaad het probleem. Echt wel scherp van je, hier lees ik dus al 2 dagen overheen :shocked:
@EVR: De code werkt perfect :)

Thx iedereen.
 
Laatst bewerkt:
Daarom dus altijd Option Explicit gebruiken.
 
Hier nog een kortere versie om de dagen in de combobox te zetten.
Code:
combobox1.list = [row(1:31)]
Of met die voorloopnul.
Code:
combobox1.list = [index(text(row(1:31),"00"),)]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan