Ciao a tutti. Ho un problema nella scrittura di due macro molto simili tra loro, che andranno nel modulo Module1 della libreria MiaLibreria del file Destinazione.ods.
La prima macro deve aprire una maschera di navigazione nel filesystem. Selezionando un foglio di calcolo (xls o ods),
lo apre,
seleziona e copia le prime due colonne,
torna al file che contiene la macro,
incolla nella stessa posizione le tre colonne e
chiude il file sorgente.
La seconda macro deve aprire una maschera di navigazione nel filesystem. Selezionando un file di testo semplice (.txt),
la macro deve importare nella colonna "a" il contenuto del file di testo, scendendo di una riga ogni volta che il testo va a capo.
E poi deve chiudere il file sorgente.
Potreste aiutarmi?
Grazie in ogni caso
Michele
Importazione in foglio di calcolo
Importazione in foglio di calcolo
OpenOffice 3.1 su Ubuntu 9.10
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: Importazione in foglio di calcolo
Per selezionare un file puoi usare il servizio "com.sun.star.ui.dialogs.FilePicker".
Per copia-incollare le colonne puoi usare parzialmente il registratore di macro
mentre per eseguire il tutto puoi fare un macro così:
Per importare del testo puoi usare una macro così (presa da http://wiki.services.openoffice.org/wik ... Library%29 ), mettendo al posto di Msg l'inserimento nella cella del foglio di calcolo.
Per copia-incollare le colonne puoi usare parzialmente il registratore di macro
Codice: Seleziona tutto
Function getData
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Sel"
args1(0).Value = false
dispatcher.executeDispatch(document, ".uno:GoToStart", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Sel"
args2(0).Value = true
dispatcher.executeDispatch(document, ".uno:GoToEndOfData", "", 0, args2())
getData = ThisComponent.CurrentSelection
end function
Codice: Seleziona tutto
sub Main
dim m1()
oCalcDest = StarDesktop.loadComponentFromUrl("private:factory/scalc", "_blank", 0, m1())
sUrl = OpenFile
dim m()
oCalcSource = StarDesktop.loadComponentFromUrl(sUrl, "_blank" , 0, m())
oSel = oCalcSource.CurrentSelection
aData = getData.getDataArray
iRows = getData.Rows.count -1
iCols = getData.Columns.count -1
oRange = oCalcDest.Sheets(0).getCellRangeByPosition(0, 0, iCols, iRows)'leftCol, leftRow, righCol, righRow)
oRange.setDataArray(aData)
end sub
Codice: Seleziona tutto
Dim FileNo As Integer
Dim CurrentLine As String
Dim File As String
Dim Msg as String
' Define filename
Filename = "c:\data.txt"
' Establish free file handle
FileNo = Freefile
' Open file (reading mode)
Open Filename For Input As FileNo
' Check whether file end has been reached
Do While not eof(FileNo)
' Read line
Line Input #FileNo, CurrentLine
If CurrentLine <>"" then
Msg = Msg & CurrentLine & Chr(13)
end if
Loop
' Close file
Close #FileNo
Msgbox Msg
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Re: Importazione in foglio di calcolo
Grazie della risposta xergio!
Dunque, utilizzando la seconda macro,
la linea
oCalcSource = StarDesktop.loadComponentFromUrl(sUrl, "_blank" , 0, m())
provoca il messaggio:
Errore di runtime basic.
Si è verificata un'eccezione
Type: com.sun.star.lang.IllegalArgumentException
URL seems to be an unsupported one.
Scusami ma non capisco il perché.
Grazie in ogni caso
Michele
Dunque, utilizzando la seconda macro,
la linea
oCalcSource = StarDesktop.loadComponentFromUrl(sUrl, "_blank" , 0, m())
provoca il messaggio:
Errore di runtime basic.
Si è verificata un'eccezione
Type: com.sun.star.lang.IllegalArgumentException
URL seems to be an unsupported one.
Scusami ma non capisco il perché.
Grazie in ogni caso
Michele
OpenOffice 3.1 su Ubuntu 9.10
- xergio
- Messaggi: 315
- Iscritto il: lunedì 15 marzo 2010, 21:54
- Località: Arzignano (Vicenza)
- Contatta:
Re: Importazione in foglio di calcolo
Scusa della poca chiarezza:
presuppone l'uso del servizio FilePicker con una funzione simile a questa:
presuppone l'uso del servizio FilePicker con una funzione simile a questa:
Codice: Seleziona tutto
'***Open file****************************************************
Function OpenFile
oFilePicker = createUnoService ("com.sun.star.ui.dialogs.FilePicker")
'oFilePicker.appendFilter("OpenDocumentText","*.odt")
If oFilePicker.execute() Then
OpenFile = oFilePicker.Files(0)
Else
print "Select the file"
Endif
End Function
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
---
Sergio Corato
LibO 6.x su Ubuntu 18.04 / OOo 4.x su Windows XP/10 (VirtualBox)
https://efatto.it
Re: Importazione in foglio di calcolo
Scusami il ritardo, xergio.
Comunque aggiungendo la funzione, che definisce OpenFile, l'errore si risolve.
Grazie
!
Comunque aggiungendo la funzione, che definisce OpenFile, l'errore si risolve.
Grazie

OpenOffice 3.1 su Ubuntu 9.10