[Risolto]Macro crea cartella

Discussioni sulle caratteristiche di database
Rispondi
sgruntolino
Messaggi: 65
Iscritto il: domenica 1 gennaio 2012, 15:57

[Risolto]Macro crea cartella

Messaggio da sgruntolino »

Ciao a tutti un aiuto sulla macro per favore dove sono negato....
Ho messo come esempio questa macro che uso gia' ma mi salva in pdf dei fogli calc prendendo i dati da varie caselle per il nome del pdf, sulla quale ho gia' fatto molte prove ma nulla.
Ho un Form esterno a base in Writer, su questo form inserisco i clienti. Vorrei che quando inserisco un nuovo cliente la macro associata a un pulsante mi creasse una cartella nell URL come da macro di esempio col nome che prende da un campo del Form.
Grazie a chi mi da una mano

Codice: Seleziona tutto

sub export_pdfdatacustomer

  'prepara il range da esportare:
  oRng = ThisComponent.Sheets.Foglio1.getCellRangeByName("A1:K34")

  'configurazione del filtro (viene usata più sotto)
  Dim mFilterData(0) As New com.sun.star.beans.PropertyValue
  mFilterData(0).Name = "Selection"
  mFilterData(0).Value = oRng

  'parametri di esportazione
  Dim mStoreOpts(2) As New com.sun.star.beans.PropertyValue
  mStoreOpts(0).Name = "Overwrite"
  mStoreOpts(0).Value = True
  mStoreOpts(1).Name = "FilterName"
  mStoreOpts(1).Value = "calc_pdf_Export"
  mStoreOpts(2).Name = "FilterData"
  mStoreOpts(2).Value = mFilterData()


  sUrl = "file:///home/Documenti/Clienti/"& ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String &"/" & ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String & "_Data.pdf"
  ThisComponent.storeToURL(sURL, mStoreOpts())
End Sub
Ultima modifica di sgruntolino il lunedì 20 maggio 2013, 16:59, modificato 2 volte in totale.
libreoffice 4.0
Ubunto 12.04
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Macro crea cartella

Messaggio da Mizio1961 »

Ciao
prova così:

Codice: Seleziona tutto

    sub export_pdfdatacustomer

      'prepara il range da esportare:
      oRng = ThisComponent.Sheets.Foglio1.getCellRangeByName("A1:K34")

      'configurazione del filtro (viene usata più sotto)
      Dim mFilterData(0) As New com.sun.star.beans.PropertyValue
      mFilterData(0).Name = "Selection"
      mFilterData(0).Value = oRng

      'parametri di esportazione
      Dim mStoreOpts(2) As New com.sun.star.beans.PropertyValue
      mStoreOpts(0).Name = "Overwrite"
      mStoreOpts(0).Value = True
      mStoreOpts(1).Name = "FilterName"
      mStoreOpts(1).Value = "calc_pdf_Export"
      mStoreOpts(2).Name = "FilterData"
      mStoreOpts(2).Value = mFilterData()

      mkdir(".../home/Documenti/Clienti/"& ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String ") ' PER UNIX
      mkdir("C:\...\home\Documenti\Clienti\"& ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String ") ' PER WINDOWS
      sUrl = "file:///home/Documenti/Clienti/"& ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String &"/" & ThisComponent.Sheets.Foglio1.getCellRangeByName("C1").String & "_Data.pdf"
      ThisComponent.storeToURL(sURL, mStoreOpts())
    End Sub

La funzione è mkdir; ovviamente devi usare solo una delle due righe a seconda del sistema operativo su cui lavori
Dove sostituisci i ... con ciò che precede la struttura di archiviazione dalla root directory. Su windows il tuo disco potrebbe avere una lettera identificativa diversa da C
Saluti e fai sapere se ok
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
sgruntolino
Messaggi: 65
Iscritto il: domenica 1 gennaio 2012, 15:57

Re: Macro crea cartella

Messaggio da sgruntolino »

grazie della disponibilita', provo a lavorarci sopra su questa, come avevo scritto ho un formulario in WRITER e non in calc, quindi devo riuscire a prendere il nome da un campo di testo. Faccio un po di prove. Grazie
libreoffice 4.0
Ubunto 12.04
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Macro crea cartella

Messaggio da Mizio1961 »

Ciao
Per leggere il valore da formulario io uso una sintassi di questo tipo

Codice: Seleziona tutto

public sub cmdSaveCLi(oEvent as object)     ' SALVA CLIENTE
   dim oForm as object
   dim oCntrl as object
   oForm = oEvent.Source.Model.Parent            ' ACQUISISCO FORM CORRENTE
   oCntrl = oForm.getbyname("Nometuacasellaconnomecartella")
   mkdir(".../home/Documenti/Clienti/"& oCntrl.Text") ' PER UNIX
end sub                                          ' FINE
Provala e vedi se ti funziona
Saluti
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
sgruntolino
Messaggi: 65
Iscritto il: domenica 1 gennaio 2012, 15:57

Re: Macro crea cartella

Messaggio da sgruntolino »

Semplicemente perfetto, grazie davvero :bravo:
libreoffice 4.0
Ubunto 12.04
Rispondi