Página 1 de 1

[RESUELTO] forma de copiar celdas ocultas con una macro?

Publicado: Dom Jun 20, 2010 9:29 am
por DavidCs
Tengo una hoja , donde para seleccionar los datos que están oculto quiero copiarlos a otra parte de esa misma hoja, pero cuando lo protejo no me sale los datos ya que está oculto.

¿Habría alguna forma de poder copiar esos datos, mediante una macro?

Muchas gracias

Re: ¿Hay alguna forma de copiar celdas ocultas con una macro

Publicado: Lun Jun 21, 2010 4:41 pm
por mauricio
Hola...

Claro que hay forma, solo que no estoy muy seguro de que es lo que realmente quieres, si quieres copiar datos de celdas ocultas o de celdas donde se oculta el contenido por medio de Formato | Celdas | Protección de celdas que son dos cosas diferentes... si nos das más detalles, tal vez podamos ayudarte...

Saludos

Re: ¿Hay alguna forma de copiar celdas ocultas con una macro

Publicado: Jue Jun 24, 2010 3:30 pm
por DavidCs
Perdón.

Cuando me refería a copiar celdas era en base a celdas donde se oculta el contenido por medio de Formato | Celdas , ocultar todo y ocultar para la impresión.

Lo que pretendo hacer es hacer una macro que copie unos valores de una hoja por ejemplo de la t:136: a la ab:136 que están ocultas como te de he dicho anteriormente a otra hoja en una posición por ejemplo a1.

Cuando lo hago con la hoja protegida ya no me funciona, porque me lo copia en blanco.

Muchas gracias por tu atención.

Re: ¿Hay alguna forma de copiar celdas ocultas con una macro

Publicado: Vie Jun 25, 2010 8:34 pm
por mauricio
Hola...

Es muy sencillo, te muestro dos formas de hacerlo, asumimos que estas usando Formato | Celdas | Protección de celda... y Herramientas | Proteger documento | Hoja...
captura01.png
La primer macro, asume que la hoja esta protegida pero sin contraseña, si tiene contraseña ponla donde se indica...

Código: Seleccionar todo

Sub CopiarOcultos1()
Dim oDoc As Object
Dim oHojaOrigen As Object
Dim oHojaDestino As Object
Dim oRango As Object
Dim oCelda As Object

	'Este documento
	oDoc = ThisComponent
	oHojaOrigen = oDoc.getSheets.getByName("Origen")
	oHojaDestino = oDoc.getSheets.getByName("Destino")
	'Los datos a copiar
	oRango = oHojaOrigen.getCellRangeByName("A1:B5")
	'La celda destino
	oCelda = oHojaDestino.getCellRangeByName("A1")
	'Desproteguemos la hoja, si tiene contraseña aquí ponla
	oHojaOrigen.unProtect( "" )
	'Copiamos los datos
	oHojaDestino.copyRange( oCelda.getCellAddress, oRango.getRangeAddress )
	'Volvemos a proteger la hoja
	oHojaOrigen.Protect( "" )
	
	MsgBox "Datos copiados"
	
End Sub
Esta segunda macro copia los valores de las celdas, por lo que no necesitas saber la contraseña de la hoja, interesante...

Código: Seleccionar todo

Sub CopiarOcultos2()
Dim oDoc As Object
Dim oHojaOrigen As Object
Dim oHojaDestino As Object
Dim oRango As Object
Dim mDatos As Object

	'Este documento
	oDoc = ThisComponent
	oHojaOrigen = oDoc.getSheets.getByName("Origen")
	oHojaDestino = oDoc.getSheets.getByName("Destino")
	'Los datos a copiar
	oRango = oHojaOrigen.getCellRangeByName("A1:B5")
	'Obtenemos los datos
	mDatos = oRango.getDataArray()
	'El destino, aquí, no necesariamente tiene que ser el mismo rango, pero es
	'MUY IMPORTANTE que sea del mismo tamaño en alto y en ancho, exactamente.
	oRango = oHojaDestino.getCellRangeByName("A1:B5")
	'Pegamos los datos
	oRango.setDataArray( mDatos )	

	MsgBox "Datos copiados"
	
End Sub
Para adaptarla a tus necesidades, solo cambia los rangos respectivos. Anexo archivo de ejemplo.

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos

Re: ¿Hay alguna forma de copiar celdas ocultas con una macro

Publicado: Sab Jun 26, 2010 9:13 am
por DavidCs
Muchísimas gracias!!

Me has hecho un gran favor