nicola ha scritto:
Ciao, vorrei salvare la prima pagina di un file "ricevuta.ods" (calc) in formato pdf con una macro da assegnare ad un pulsante, sino a questo punto ci sono arrivato col registratore di macro, però vorrei assegnargli il numero progressivo contenuto nella cella "c5" per ottenere ricevuta1, ricevuta2 ecc. potete aiutarmi? grazie Nicola

sub Main
rem ----------------------------------------------------------------------
rem define variables

dim oSheet as object
dim dispatcher as object
dim document   as object
dim oCell
dim oNome
Dim oDoc
Dim oPath
Dim sDocURL

oDoc = ThisComponent

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
 GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If

If (oDoc.hasLocation()) Then
 sDocURL = oDoc.getURL()
 oPath = DirectoryNameoutofPath(sDocURL, "/") & "/"
else
 rem ovviamente la directory deve esistere
 oPath = "/Directory_di_mia_scelta" & "/"
endif

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
rem foglio attivo
oSheet = ThisComponent.CurrentController.ActiveSheet
oCell = oSheet.getCellRangebyName("C5").getCellByPosition(0,0)

rem nella Variabile oNome puoi aggiungere con la & e le virgolette il nome che vuoi
rem ad esempio  & "ricevuta" prima di oCell.string

oNome = convertToUrl(oPath & oCell.string & ".pdf")
rem controllo del nome file
rem Print oNome

args1(0).Name = "URL"
args1(0).Value = oNome
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "SelectionOnly"
args1(2).Value = false
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())

end sub

ciao
Beppe




presa da pagina 107 di AndrewMacro.pdf

5.35. Get the document URL, filename, and directory
Do not try to obtain the document URL unless it has a URL. If the document has not yet been stored, for example. Rather than write my own routines, I use some functions in the Strings
Module stored in the Tools library.
  Listing 5.90: Extracting file and path information from a URL.
  REM Author: Andrew Pitonyak
  Sub DocumentFileNames
    Dim oDoc
    Dim sDocURL
    oDoc = ThisComponent
    If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
       GlobalScope.BasicLibraries.LoadLibrary("Tools")
    End If
    If (oDoc.hasLocation()) Then
       sDocURL = oDoc.getURL()
       Print "Document Directory = " & DirectoryNameoutofPath(sDocURL, "/")
       Print "Document File Name = " & FileNameoutofPath(sDocURL, "/")
    End If
End Sub

Se vuoi che da un documento non salvato scelga Path selezionato in Strumenti->Opzioni->percorso

ti mando un esempio da inserire nella macro:

A meta' macro si vede un message_box con tutti gli elementi del Path ai quali accedere.

Sub GetWritePath
Dim parametro
Dim aArg(0) As New com.sun.star.beans.PropertyValue
aArg(0).Name = "nodepath"
aArg(0).Value = "org.openoffice.Office.Paths"
oCP = CreateUnoService("com.sun.star.configuration.ConfigurationProvider")
oCA = oCP.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess",aArg)
oPaths = oCA.getPropertyValue("Paths")
oPathSubst = CreateUnoService("com.sun.star.util.PathSubstitution")

' these names can be used to access the path configuration
sPathNames = oPaths.getElementNames()
sTxt = "Path Names: " & chr(10)
For i = 0 To UBound(sPathNames) Step 1
 sTxt = sTxt & sPathNames(i) & chr(10)
Next i
msgbox sTxt
' Temp: Temporary files, Work: My Documents

' set a name from them
oAutoCorrectPath = oPaths.getByName("Work")
' sometimes default path includes variable like $(user) or ...
' needs to substitute them
sTemplatePath = oPathSubst.substituteVariables(oAutoCorrectPath.WritePath,True)
parametro = sTemplatePath + "/MIO_FILE_DA_APRIRE.ott"
msgbox parametro
rem shell("soffice -n",10,parametro,FALSE)

End Sub


--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.


---------------------------------------------------------------------
To unsubscribe, e-mail: utenti-unsubscr...@it.openoffice.org
For additional commands, e-mail: utenti-h...@it.openoffice.org

Rispondere a