VB Macro "opslaan als"

Weet je niet waar je je bericht moet zetten? Doe het hier
Theo van H.
Berichten: 1
Lid geworden op: ma jan 13, 2020 3:09 pm

VB Macro "opslaan als"

Bericht door Theo van H. »

Hallo allemaal,
Ik ben sinds kort na jaren overgestapt van Excel naar Oo. Aanpassen gaat goed, verschillen vallen me nog mee. :)
Echter: in Excel had ik een macro (gekregen) die mijn actieve tabblad opsloeg.
Werking: ik maak facturen. Gegevens uit andere tabbladen worden verzameld op het tabblad "factuur'. Daar staat in cel A1 (met behulp van tekst.samenvoegen) het pad, naam klant, weeknummer. BV: C:\administratie\debiteuren\F2020-01, de Boer, week1. Vervolgens moet het opgeslagen worden als PDF èn het melden als er al een ebstand bestaat (dan mag macro gestopt worden..).
In Excel was het een kort macrootje, maar ik krijg hem niet vertaald naar OO.
Wie kan helpen??
Open Office 417, windows 10
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: VB Macro "opslaan als"

Bericht door RPG »

Dat hier een opgenomen macro gebruikt wordt, betekent niet dat je opgenomen macro's veelvuldig in een loop kunt gebruiken. Opgenomen macro's zijn in principe buitengewoon traag maar voor een eenmalige handeling zoals het exporteren van een printbereik naar een PDF is traagheid niet belangrijk.

Het volgende is een opgenomen macro die een pdf bestand maakt. Om de inhoud te controleren kan het best een printbereik aan gemaakt worden. Voor het aanpassen van de filenaam kun je de naam aanpassen.
De opgenomen macro is wel iets veranderd. Het belangste is misschien wel het toevoegen van Overwrite
Service MediaDescriptor

Code: Selecteer alles

sub Macro1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/romgro/Documenten/opof/data/calc2/Hulpprogrammas/VoorPDF/metarguments/proefje.pdf"
' Hier moet de file naam komen al of niet met een extensie.
' Het is niet een padnaam zoals mogelijk in een filemanage
' hier wordt een url gebruikt.
' De URL kan gemaakt worden in CALC of met behulp van BASIC
' ConvertToURL(filename)
' ConvertFromURL(filename)


args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "Overwrite"
args1(2).Value = false
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())

end sub
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
DiGro
Berichten: 86
Lid geworden op: wo mei 13, 2009 4:57 pm
Locatie: Hoorn NH

Re: VB Macro "opslaan als"

Bericht door DiGro »

Misschien zoiets ?

Code: Selecteer alles

Option Explicit

Sub FactuurAlsPDF()

  Dim Cel        As Object
  Dim Werkblad   As Object
  Dim oDoc
  Dim sPad       as String
  Dim sPDFNaam   as String
  
  oDoc = ThisComponent
  Werkblad = oDoc.Sheets.getByName("Factuur")
  Cel = Werkblad.getCellByposition(0,0) 'cel A1
  
  sPDFNaam = ConvertToURL(Cel.getString("A1")&".pdf")

 dim args2(1) as new com.sun.star.beans.PropertyValue  
       args2(0).Name = "URL"
       args2(0).Value = sPDFNaam
       args2(1).Name = "FilterName"
       args2(1).Value = "calc_pdf_Export"

  If Not FileExists(sPDFNaam) Then
     ThisComponent.storeToUrl(sPDFNaam, args2())
     Wait 2000
   Else
    MsgBox ("Bestand bestaat al!" & CHR(13) & "Huidige bestand wordt niet opgeslagen", 49, "Bestand bestaat al")
    Exit Sub
  End If

End Sub
DiGro

----------------------------------------------------
Windows 11 en AOO 4.1.15
Gescand door Ziggo Safe Online (F-Secure)
Plaats reactie