inserimento in cella "particolare"

Creare una macro - Scrivere uno script - Usare le API
Rispondi
bobothebest
Messaggi: 4
Iscritto il: martedì 11 maggio 2010, 13:14

inserimento in cella "particolare"

Messaggio da bobothebest »

Ciao a tutti
la stringa :#253451 Secunda Mesarthim VI (3 Orbite disponibili) [Aeron:1b0x4]
è composta da due parti (escludendo il # che non serve a niente :D)
la parte tra il # e [ che è il testo che vorrei inserire nella cella( magari senza il #)
la parte compresa tra le quadre che è la "posizione" della cella ( in esadecimale)

io mi trovo a dover inserire nella griglia che ho allegato scariate stringhe come quella dell'esempio e sto cercando un modo per "automatizzare" il processo vorrei poter incollare la stringa da qualche parte e che questa venga automaticamente inserita nella posizione corretta ma non ho la minima idea di come fare....

In ogni cella devono poter essere inserite piu "stringhe" (possibilmente separate da un trattino)
Non ho mai fatto niente del genere ne su excel ne su open office senza usare il registratore di macro ( e non mi pare che in questo caso possa servire) pertanto non so da dove cominciare
utilizzo principalmente openoffice su ubuntu ma mi capita anche su windows non mi interessa che "funzioni" in tutti e due gli ambienti mi basterebbe ubuntu come devo fare?
Allegati
Universo Standart - Aeron 0x0 - 201x201 (vuoto - sistema esadecimale).ods
(16.62 KiB) Scaricato 280 volte
OpenOffice 2.4 su Ubuntu
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: inserimento in cella "particolare"

Messaggio da xergio »

Richiede una conoscenza abbastanza approfondita delle macro (in ogni caso non bastano 5 minuti per farlo :shock: ), un sistema potrebbe essere questo, presupponendo che la lista delle stringhe sia su una colonna di una tabella del foglio di calcolo:
- posizioni il cursore sulla prima cella della colonna;
- lanci una macro che, passando riga per riga la colonna, provvede a:
- prendere il testo della prima cella e dividerlo nelle due parti (Left, Len, InStr, Mid le funzioni di Basic, vedi http://wiki.services.openoffice.org/wik ... Library%29 );
- analizzare il secondo frammento della stringa e prendere la sola parte esadecimale (come sopra);
- traduce in decimale le coordinate con

Codice: Seleziona tutto

   oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
   result = oFunctionAccess.callFunction( "HEX.DECIMALE", array("numero_esadecimale") )
- inserisce il primo frammento della stringa nella posizione voluta in base alle coordinate trovate.

In alternativa puoi fare quasi tutto senza macro, tranne l'ultimo punto, con funzioni di Calc (STRINGA.ESTRAI, LEN, TROVA), come nel file allegato (non ho capito il numero esadecimale come è suddiviso però...)
Allegati
Universo Standart - Aeron 0x0 - 201x201 (vuoto - sistema esadecimale).ods
(17.71 KiB) Scaricato 262 volte
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
bobothebest
Messaggi: 4
Iscritto il: martedì 11 maggio 2010, 13:14

Re: inserimento in cella "particolare"

Messaggio da bobothebest »

la griglia rappresenta il quadrante con x>0 y<0 di un piano cartesiano
la parte esadecimale rappresenta la "posizione" nel formato ascissa x ordinata
non ho capito molto di quello che hai detto...
la "lista" di stringhe è salvata su file di testo mi basta poter inserire automaticamente una "stringa" per volta (mettendola nella zona opportuna) se semplifica il problema
OpenOffice 2.4 su Ubuntu
Avatar utente
xergio
Messaggi: 315
Iscritto il: lunedì 15 marzo 2010, 21:54
Località: Arzignano (Vicenza)
Contatta:

Re: inserimento in cella "particolare"

Messaggio da xergio »

Risolvendo il problema nella maniera più semplice è sufficiente:
- estrarre i numeri di colonna e di riga direttamente in Calc con delle formule, come nel file allegato;
- eseguire una macro come quella sotto:

Codice: Seleziona tutto

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

Sub test
oCalc = ThisComponent
oSel = oCalc.CurrentSelection
iRowNr = oSel.rows.count -1
iColNr = oSel.columns.count -1
aData = oSel.getDataArray
aColData = aData(0)
For n=0 To (iRowNr)
	aRowData = aData(n)
	sText = aRowData(0)
	iCol = aRowData(3)
	iRow = aRowData(4)
	ThisComponent.Sheets.getByName("Galassia 1").getCellByPosition(iCol, iRow).setString(sText)
Next
End Sub
Questa macro è all'interno del file allegato, collegata ad un bottone e deve preventivamente essere selezionato il range da importare.
Per trasferire un file di testo formattato all'interno di calc, è sufficiente aprirlo con Calc e seguire la procedura guidata.

Per quanto riguarda la notazione della posizione del testo da inserire, per fortuna non sono un tuttologo :mrgreen: , quindi scusami se non capisco come è disposta, ma con le formule di Calc nel file dovresti capire come estrarre la riga e la colonna.
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
bobothebest
Messaggi: 4
Iscritto il: martedì 11 maggio 2010, 13:14

Re: inserimento in cella "particolare"

Messaggio da bobothebest »

grazie mille :)
la posizione della cella è scritta tra le [] in questo formato rigaxcolonna
solo che riga e colonna compaiono rappresentati in esadecimale nella stringa e vanno convertiti
OpenOffice 2.4 su Ubuntu
Rispondi