Copiar o mover hojas ocultas entre dos libros

Maestro... Podrías ayudarme con esto por favor...

Tengo dos libros, prácticamente iguales, uno es una version más actualizada del mismo, entonces necesito actualizar (traspasar los datos) las hojas que contienen las bases de datos que contiene el archivo antiguo hasta el archivo nuevo. El problema es que las hojas en ambos casos están ocultas con este código:

Sheets("orden de compra").Visible = xlVeryHidden

Yo estoy usando un código que dejaste en otra pregunta para copiar las hojas:

Workbooks("antiguo"). Sheets("proveedores").Copy _
After:=Workbooks("machchile").Sheets(Workbooks("machchile").Sheets.Count)

Con este código, me sitúo en el archivo nuevo, y estoy copiando las hojas desde el archivo antiguo hasta el archivo nuevo.

Si las hojas no están ocultas, el código funciona sin problema, pero si están ocultas con ese código de VeryHidden no me deja.

Alguna sugerencia, ¿para traspasar las hojas sin que estas se hagan visibles?

1 Respuesta

Respuesta
2

H o l a:

Una opción es copiar todas las celdas, de esta forma no es necesario hacer visible la hoja, el problema es que no te copia los altos de fila, tendrías que completar la macro para poner todos los altos de fila de la hoja origen en la hoja destino.

Sub copiahoja()
'Por.Dante Amor
    Set h1 = Workbooks("antiguo.xlsx").Sheets("proveedores")
    Set h2 = Workbooks("machchile.xlsx").Sheets.Add
    h2.Name = h1.Name
    h1.Cells.Copy h2.[A1]
    h2.Visible = 2
    MsgBox "Copiada"
End Sub

Puse h2.visible = 2 para ocultar la hoja destino


Entiendo que pides que no se hagan visibles, pero para copiar la hoja completa es necesario hacerla visible. La opción es que la hagas visible, la copies y luego la vuelvas a ocultar, si pones la instrucción screenupdating = false, entonces no se verá que la haces visible:

Sub cop()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h = Workbooks("antiguo.xlsx").Sheets("proveedores")
    If h.Visible = xlVeryHidden Then
        h.Visible = -1
        h.Copy After:=Workbooks("machchile.xlsx").Sheets(Workbooks("machchile.xlsx").Sheets.Count)
        ActiveSheet.Visible = 2
        h.Visible = 2
    End If
    MsgBox "Copiada"
End Sub

También puse activesheet.visible = 2 , para ocultar la hoja destino. si quieres que la hoja copiada se muestre, solamente eliminar la línea de la macro.


Nuevamente muchas gracias!

Al final de cuentas hice uso de ambos códigos, con el que se puede copiar contenido oculto, justamente copié la información de las hojas ocultas, que son las que hacen la función de base de datos y deben estar ocultas, las que son visibles y se pueden modificar las copié con el primer código, ya que con el otro me modificaba el contenido, como por ej, eliminaba la verificación de datos en cierto rango de celdas. En fin... me sirvieron los dos... Muchas gracias por todo tu tiempo! Saludos desde Chile (Y)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas