[RESUELTO] Duda en macro CopyPaste, copiar valores de celda

Discute sobre la aplicación de hojas de cálculo
Responder
raxell
Mensajes: 35
Registrado: Dom Dic 16, 2012 4:35 pm

[RESUELTO] Duda en macro CopyPaste, copiar valores de celda

Mensaje por raxell »

Hola a todos, no soy programador ni cerca de serlo xD. He estado buscando info para hacer una macro que me copie y pegue unas casillas en otras. El resultado es el que dejo abajo y FUNCIONA!! (por si a alguien le sirve) pero copia la casilla completa con formato incluido, yo busco copiar solo el "valor" de la casilla de una a otra, sin formatos, ni bordes, ni nada de eso.

Código: Seleccionar todo

Dim oSel As Object
Dim oDir As Object
Dim oHoja As Object

	oHoja = ThisComponent.getSheets().getByIndex( 1 )
	oSel = ThisComponent.CurrentController.Selection
	oDir = oSel.CellAddress

	if oDir.Row > 6 And oDir.Row < 40 Then
	oHoja.getCellByPosition(25, 1).setValue(oDir.Row)
	Else
	oHoja.getCellByPosition(25, 1).setString("NO SELECT")
	End if
	
'COPIAR DATOS
Dim oOrigen1 As Object
Dim oDestino1 As Object
Dim oOrigen2 As Object
Dim oDestino2 As Object 


	oOrigen1 = oHoja.getCellRangeByName( "Y2" )'casilla P.ENTRADA
	oDestino1 = oHoja.getCellByPosition( 12, oDir.Row)
	'	oOrigen2 = oHoja.getCellRangeByName( "Y3" )'casilla STOPLOSS
	oDestino2 = oHoja.getCellByPosition( 14, oDir.Row )

	
	oHoja.CopyRange( oDestino1.getCellAddress(), oOrigen1.getRangeAddress() )
	oHoja.CopyRange( oDestino2.getCellAddress(), oOrigen2.getRangeAddress() )
En realidad lo que hago es que copio unas casillas en otras en función de donde está el cursor. Llegar aquí no me ha sido nada fácil, llevo días! pero no consigo hacer que me funcione salvo de esta manera. He indagado especialmente en getValue y setValue pero, o no sirve, o es que no entiendo como usarlos.

Alguien puede ayudarme? Gracias!!


SOLUCION:
Cambiar la última línea del "CopyRange" por esta
mauricio escribió:

Código: Seleccionar todo

oDestino1.setValue(oOrigen1.getValue())
Última edición por raxell el Vie May 19, 2017 6:02 pm, editado 1 vez en total.
openoffice 3.4.1
Windows 8
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Duda en macro CopyPaste, solo valores de celda

Mensaje por mauricio »

Hola...

Si tu origen y destino es una sola celda, esto debería de funcionar:

Código: Seleccionar todo

destino.setValue(origen.getVAlue())
De igual modo si es texto: setString y getString

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Duda en macro CopyPaste, solo valores de celda

Mensaje por fornelasa »

Me parece que "CopyRange" no servirá para esta tarea.
Adicionalmente, con la otra propiedad llamada "Formula" podemos intentar:
Con estas dos lineas en vez de las dos ultimas lineas de tu macro

Código: Seleccionar todo

oDestino1.Formula = oOrigen1.Formula
oDestino2.Formula = oOrigen2.Formula
Si las celdas origen tienen formulas y deseas pasar solo valores, "Formula" no te servirá (usa lo descrito por mauricio)
Si las celdas origen tienen textos o valores "Formula" si te servirá.

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
raxell
Mensajes: 35
Registrado: Dom Dic 16, 2012 4:35 pm

Re: Duda en macro CopyPaste, solo valores de celda

Mensaje por raxell »

mauricio escribió:

Código: Seleccionar todo

destino.setValue(origen.getVAlue())
Sí!! por fin!! La de vueltas que he dado con get y setValue, entre otros intentos fallidos. Lo que es que un profesional te eche una mano, en un momento tengo esto solucionado.

Muchisimas gracias a los dos por la ayuda. Fornelasa, me quedo con tu dato sobre el tema de la formula, quizás me haga falta en algun momento.
openoffice 3.4.1
Windows 8
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Duda en macro CopyPaste, copiar valores de ce

Mensaje por mauricio »

Por si fuera de su interes, con Python se puede tener algo como:

Código: Seleccionar todo

destino.value = origen.value
no importa si es texto o números.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder