VBA/Macro voor Opslaan als PDF

Weet je niet waar je je bericht moet zetten? Doe het hier
TimvMechelen
Berichten: 6
Lid geworden op: do nov 03, 2016 11:29 am

VBA/Macro voor Opslaan als PDF

Bericht door TimvMechelen »

Hallo allemaal,
Ik zou een macro willen waarmee ik een bepaalde sheet genaamd "Afdrukpagina Draaien" op wil slaan als PDF. Hierbij wil ik alleen hetgeen in het afdrukbereik opslaan.
Ook wil ik het pad(de locatie) waar het bestand opgeslagen moet worden in kunnen voeren. Dit pad (bijvoorbeeld in dit geval: H:\Mijn documenten\EXCEL MODEL\Testcalculaties\Opgeslagen als PDF) is te vinden op sheet "Beginblad" in cel "P3". Dus in de macro moet hierna verwezen worden, zodat het pad altijd gewijzigd kan worden.

Verder staat in een bepaalde cel ook de naam die het PDF bestand zou moeten krijgen. Deze cel staat op de sheet "Beginblad" in cel "P4"

Ik hoop dat iemand mij hiermee verder zou kunnen helpen.

De macro die ik nu heb is:

Sub OpslaanPDF_AfdrukpaginaDraaien()
'
' OpslaanPDF_AfdrukpaginaDraaien Macro
' De sheet "Afdrukpagina Draaien" Opslaan in bestandslocatie genoteerd in Beginblad.
'

'
ActiveWorkbook.SaveAs "Range(Beginblad!P3)" & Range(Beginblad!P4).Value & ".pdf"
End Sub
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: VBA/Macro voor Opslaan als PDF

Bericht door RPG »

Hallo

Ik heb voor jou een zoek actie gedaan op het Engelse forum. Misschien kun je daar enige zaken uit halen.

https://www.google.nl/search?q=site%3Af ... GCaN7HpeAC

Mijn eerste gedachte is:
Print het gewenste naar een pdf printer zodat daar het werk gedaan wordt
Neem een macro op en probeer die aan te passen.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
TimvMechelen
Berichten: 6
Lid geworden op: do nov 03, 2016 11:29 am

Re: VBA/Macro voor Opslaan als PDF

Bericht door TimvMechelen »

RPG schreef:Print het gewenste naar een pdf printer zodat daar het werk gedaan wordt
Neem een macro op en probeer die aan te passen.
Bedankt voor je reactie,
Ik ben zelf niet zo bekend met VBA/Macro's schrijven, dus de meeste macro's/ VBA programmacodes die ik vind kan ik niet zodanig aanpassen en werkend krijgen in mijn eigen bestand.

Mijn vraag was dus eigenlijk of iemand mij hiermee kon helpen.
TimvMechelen
Berichten: 6
Lid geworden op: do nov 03, 2016 11:29 am

Re: VBA/Macro voor Opslaan als PDF

Bericht door TimvMechelen »

Code: Selecteer alles

Sub OpslaanAls_AfdrukpaginaDraaien()
'
' OpslaanAls_AfdrukpaginaDraaien Macro
'

'
    Sheets("Afdrukpagina Draaien").Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "H:\Mijn documenten\EXCEL MODEL\Testcalculaties\Opgeslagen als PDF\Opzet parameters Excel Model_18.pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
End Sub
Deze macro krijg ik met als ik de macro opneem.

Hierin zou ik graag de locatie willen wijzigen waar het bestand opgeslagen wordt, en de naam.
De locatie moet uit de cel "P3" op sheet "Beginblad" gehaald worden.
De naam van het bestand moet uit cel "P4" op sheet "Beginblad" gehaald worden.

Ik hoop u genoeg te hebben geïnformeerd
Laatst gewijzigd door TimvMechelen op do nov 03, 2016 3:32 pm, 1 keer totaal gewijzigd.
MS Office 2010 op Windows 8/8.1
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: VBA/Macro voor Opslaan als PDF

Bericht door RPG »

Hallo

Ik heb nog een Nederlandse macro gevonden op dit forum.
CALC: Macro automatisch opslaan met waarde uit cel (Toon onderwerp) • OpenOffice.org

Ik denk dat het goed is om macro's te vermijden. Wanneer je je goed verdiept in het gebruik van OOo dan kunnen de macro's ook simpeler. In dit geval definieer een print bereik voor het PDF deel en een naam voor de twee cellen.

Code: Selecteer alles

sub ExporttoPDF_voorbeeld
' Voor deze macro moeten twee cellen onder elkaar gebruikt worden
' De eerste cel bevat de directory of te wel mapnaam eindigen op een map scheidings teken
' De tweede cel bevat de bestands naam. 
De twee cellen moeten een naam krijgen en wel : NaamBestand
dim oNamedranges
dim oNaamVoorBestand
const sNaamVoorBestand="NaamBestand" ' Je mag deze naam veranderen
dim oReferredCells
oNamedranges= thiscomponent.NamedRanges
if oNamedranges.hasbyname(sNaamVoorBestand) then
	oNaamVoorBestand=oNamedranges.getbyname(sNaamVoorBestand)
	oReferredCells=oNaamVoorBestand.getReferredCells
else
	msgbox "de Naam is verkeerd. Je moet een naam voor een cel gebruiken" & chr(13) & "Macro wordt gestopt"
end if

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
dim args1(3) as new com.sun.star.beans.PropertyValue
'Stel eerst de namen in
args1(0).name="SuggestedSaveAsDir"
args1(0).value=oReferredCells.dataarray(0)(0)
args1(1).name="SuggestedSaveAsName"
args1(1).value=oReferredCells.dataarray(1)(0)


args1(2).Name = "FilterName"
args1(2).Value = "calc_pdf_Export"

args1(3).Name = "FilterData"
args1(3).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0,  args1())

end sub
Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
TimvMechelen
Berichten: 6
Lid geworden op: do nov 03, 2016 11:29 am

Re: VBA/Macro voor Opslaan als PDF

Bericht door TimvMechelen »

Code: Selecteer alles

sub ExporttoPDF_voorbeeld
' Voor deze macro moeten twee cellen onder elkaar gebruikt worden
' De eerste cel bevat de directory of te wel mapnaam eindigen op een map scheidings teken
' De tweede cel bevat de bestands naam. 
De twee cellen moeten een naam krijgen en wel : NaamBestand
dim oNamedranges
dim oNaamVoorBestand
const sNaamVoorBestand="NaamBestand" ' Je mag deze naam veranderen
dim oReferredCells
oNamedranges= thiscomponent.NamedRanges
if oNamedranges.hasbyname(sNaamVoorBestand) then
	oNaamVoorBestand=oNamedranges.getbyname(sNaamVoorBestand)
	oReferredCells=oNaamVoorBestand.getReferredCells
else
	msgbox "de Naam is verkeerd. Je moet een naam voor een cel gebruiken" & chr(13) & "Macro wordt gestopt"
end if

rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
dim args1(3) as new com.sun.star.beans.PropertyValue
'Stel eerst de namen in
args1(0).name="SuggestedSaveAsDir"
args1(0).value=oReferredCells.dataarray(0)(0)
args1(1).name="SuggestedSaveAsName"
args1(1).value=oReferredCells.dataarray(1)(0)


args1(2).Name = "FilterName"
args1(2).Value = "calc_pdf_Export"

args1(3).Name = "FilterData"
args1(3).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0,  args1())

end sub
Dit is als een onbekende taal voor mij.. Dus heb geen idee wat dit doet eigenlijk
MS Office 2010 op Windows 8/8.1
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: VBA/Macro voor Opslaan als PDF

Bericht door RPG »

Hallo

Ik denk dat het verstandig is om OOo te leren gebruiken zonder macro's. Ik heb het idee dat het omwerken van macro's die voor Excel zijn geschreven niet of zeer moeilijk om te werken zijn voor OOo. De door mij gemaakte macro hoeft ook niet aangepast te worden. Je kunt de aanpassingen doen in een werkblad. Mogelijk moet je het werkblad wel wat aanpassen.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
TimvMechelen
Berichten: 6
Lid geworden op: do nov 03, 2016 11:29 am

Re: VBA/Macro voor Opslaan als PDF

Bericht door TimvMechelen »

RPG schreef:Hallo

Ik denk dat het verstandig is om OOo te leren gebruiken zonder macro's. Ik heb het idee dat het omwerken van macro's die voor Excel zijn geschreven niet of zeer moeilijk om te werken zijn voor OOo. De door mij gemaakte macro hoeft ook niet aangepast te worden. Je kunt de aanpassingen doen in een werkblad. Mogelijk moet je het werkblad wel wat aanpassen.

Romke
Het is ook de bedoeling om deze macro in Excel te gebruiken en niet in OOo.
MS Office 2010 op Windows 8/8.1
Gebruikersavatar
floris v
Berichten: 2108
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: VBA/Macro voor Opslaan als PDF

Bericht door floris v »

TimvMechelen schreef:Het is ook de bedoeling om deze macro in Excel te gebruiken en niet in OOo.
Dan kun je de macro beter direct in Excel ontwikkelen. Er zijn echt wel verschillen tussen de BASICs voor Excel en AOO. Kleine verschillen in werkwijze tussen die twee kunnen leiden tot geniepige en moeilijk te traceren bugs.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: VBA/Macro voor Opslaan als PDF

Bericht door RPG »

Hallo

Ik vraag me af of TimvMechelen wel door heeft dat dit een forum is voor OpenOffice en afgeleiden?

Hoe dan ook blijft mijn advies leer eerst welk programma dan ook, goed te gebruiken zonder macro's. Ik geloof ook niet dat het eenvoudig is een toepassing te ontwikkelen die zowel wil werken in Excel en OOo.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Plaats reactie