[Risolto]Macro raggruppa separatori di campo

Creare una macro - Scrivere uno script - Usare le API
Rispondi
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

[Risolto]Macro raggruppa separatori di campo

Messaggio da XLUPOGRIGIOX »

Ciao a tutti,come da titolo vorrei sapere se esiste una macro per simulare l'operazione Dati->Testo a colonna->e flaggare sia spazio che raggruppa separatori di campo.
Allego file per prove.
Ringrazio tutti sin d'ora per l'aiuto
Allegati
prova raggruppa separatori di campo.ods
(14.23 KiB) Scaricato 176 volte
Ultima modifica di XLUPOGRIGIOX il venerdì 16 settembre 2016, 22:31, modificato 1 volta in totale.
OpenOffice 4.1.1 su windows seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro raggruppa separatori di campo

Messaggio da unlucky83 »

Scusami, ma a me sembra, dal tuo esempio, che sia più opportuno separare a larghezza fissa. I dati originali sono salvati in un file di testo?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro raggruppa separatori di campo

Messaggio da XLUPOGRIGIOX »

Ciao Unlucky,si in effetti con l'eseguibile pdftotxt esporto un pdf in txt e poi lo importo in calc,fatto ciò costruirò una macro per importare solo i dati che mi servono,ma essendoci troppe celle vuote in ogni riga tra una cella con un termine ed un'altra,provando manualmente raggruppa separatori di campo mi elimina le celle vuote e mi diventa più "lavorabile" come nel file che ho allegato
OpenOffice 4.1.1 su windows seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro raggruppa separatori di campo

Messaggio da unlucky83 »

Capito. Dalla macro presente nel file vedo che importi il file con il filtro, immagino per ottenere la prima tabella "com'è", forse basta modificare i flag di quel filtro e così con una sola macro fai tutto.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro raggruppa separatori di campo

Messaggio da XLUPOGRIGIOX »

Certo,io purtroppo non so come impostare i filtri da macro.Proviamo,magari così si risolve tutto molto più velocemente
OpenOffice 4.1.1 su windows seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro raggruppa separatori di campo

Messaggio da unlucky83 »

Codice: Seleziona tutto

REM  *****  BASIC  *****

Sub import2_sample
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
Dim sUrl As String
myarray()=ChooseFiles()
sUrl=myarray(0)
mFileProperties(0).Name = "FilterName"
mFileProperties(0).Value = "Text - txt - csv (StarCalc)"
mFileProperties(1).Name = "FilterFlags"
'mFileProperties(1).Value = "32/MRG,SYSTEM,1,1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1"
oDesktop = createUNOService("com.sun.star.frame.Desktop")
if sUrl="" then
	exit sub
end if
oDocument = oDesktop.loadComponentFromURL(sUrl,_
"_blank",0,mFileProperties())
mFileProperties(1).Value = "FIX,,SYSTEM,1,0/1/5/1/19/1/28/1/73/1/85/9/92/1/104/1/116/1/127/1"
oDocument = oDesktop.loadComponentFromURL(sUrl,_
"_blank",0,mFileProperties())
End Sub



Function ChooseFiles() 
	Dim oDialog As Object
	Dim s As String
	oDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	oDialog.setDisplayDirectory(GetWorkDir())
	oDialog.setMultiSelectionMode(FALSE)	
'	Xray oDialog
  	If oDialog.Execute() = 1 Then
    	ChooseFiles= oDialog.getFiles()
  	End If
End Function
La prima macro se eseguita, apre due nuovi file di calc con il txt importato. La seconda macro serve per selezionare il txt da importare (cioè l'allegato txt).

Codice: Seleziona tutto

'mFileProperties(1).Value = "32/MRG,SYSTEM,1,1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1"
32 sta per spazio ed è l'unico separatore impostato; /MRG sta per merge, quindi i separatori raggruppati;
SYSTEM sta per l'impostazioni di sistema per il separatore dei decimali, il primo 1 sta ad indicare che deve essere letto il txt dal primo rigo.
il secondo 1 e tutti i gli alterni stanno ad indicare la prima colonna del txt, intesa come carattere
gli 1 in mezzo stanno ad indicare il flag sulla colonna importata e indicano il formato standard.

Codice: Seleziona tutto

mFileProperties(1).Value = "FIX,,SYSTEM,1,0/1/5/1/19/1/28/1/73/1/85/9/92/1/104/1/116/1/127/1"
Fix sta per larghezza fissa, dopo system la logica dei numeri è come sopra, da notare 85/9/91, il campo da 85 a 90 viene ignorato perchè ho scelto il formato 9. per maggiori dettagli leggere pag 42 di questo tutorial:
https://www.openoffice.org/api/basic/ma ... torial.pdf
Allegati
ImportaTXT_prova.txt.zip
(540 Byte) Scaricato 154 volte
ImportaTXT.ods
(17.2 KiB) Scaricato 166 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro raggruppa separatori di campo

Messaggio da XLUPOGRIGIOX »

Ciao Unlucky,la macro da te proposta funziona alla grande!!!
Ti ringrazio per l'aiuto,una cosa,come mai l'url del file lo hai definito con myArray?
OpenOffice 4.1.1 su windows seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro raggruppa separatori di campo

Messaggio da unlucky83 »

Perchè ChooseFiles() è una funzione che fornisce come output un array. Con una piccola modifica nel suo codice infatti consente la selezione multipla di più file. L'ho modificata per restituire un solo valore, ma questo viene salvato in un array con dimensione 1. Era una macro che avevo già pronta e che ho solo adattato al tuo caso apportando il minor numero di modifiche. Avrei potuto impostare l'output della funzione come stringa e quindi scrivere direttamente sUrl=ChooseFiles() (a quel punto gli avrei cambiato anche il nome in ChooseFile() ) :lol:
Siccome sUrl deve essere una stringa, ho successivamente messo sUrl=myarray(0)

Se vuoi un'importazione più specifica, puoi applicare i codici di formato a ciascuna colonna. Ho applicato solo lo standard (1) e il nascosto (9)
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
XLUPOGRIGIOX
Messaggi: 142
Iscritto il: domenica 10 maggio 2015, 18:17
Località: Busto Arsizio (VA)

Re: Macro raggruppa separatori di campo

Messaggio da XLUPOGRIGIOX »

Ok capito,per comodità ho impostato sUrl con il nome di un file specifico,ma devo ammettere che scegliere il file non è per niente una cattiva idea,potrei metterlo come opzione se non trova il file da importare ;)
Per il resto è perfetto,per ora grazie e nel caso dovessi modificare qualcosa se il txt è diverso per cliente,chiederò di nuovo il tuo aiuto :D
OpenOffice 4.1.1 su windows seven
Rispondi