Copiar datos de Hoja oculta en Hojas nuevas

fejoal

Hola Fernando,

Espero te encuentres bien, por favor necesito tu ayuda, tengo un código para poder copiar celdas de un libro a otro según una condición, y que cuando no exista la hoja la cree con el nombre de la celda "D5". Necesito que me ayudes con unas cosas en este código:

  • Cuando cree una hoja nueva, que copia los datos de toda la columna "A" de la hoja "Datos" que esta oculta a la hoja nueva en la columna "A", que los copie con el formato de la Celda "A", es decir, color, tamaño de letra, etc.
  • Cuando copie datos a una hoja que ya existe que todas las columnas a partir de la columna "B" tengan un ancho de 40.

De antemano muchas gracias.

Sub Copiar_adjuntos()
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    Ruta = "C:\Users\z003bpca\Desktop\Bitacora\"
    arch = "copy_Reporte.xls"
    If Dir(Ruta & arch) = "" Then
        MsgBox "El archivo Reporte no existe en la ruta", vbCritical
        Exit Sub
    End If
    '
    Set l2 = Workbooks.Open(Ruta & arch)
    Set h2 = l2.Sheets("Sheet0")
    Num = h2.Range("D5").Text
    If Num = "" Then
        MsgBox "La celda D5 no contiene datos", vbExclamation
        l2.Close False
        Exit Sub
    End If
    If IsNumeric(Num) Then
        Num = "" & Val(Num)
    End If
    '
    existe = False
    For Each h In l1.Sheets
        If h.Name = Num Then
            existe = True
            Set h1 = h
            Exit For
        End If
    Next
    '
    If existe = False Then
        l1.Sheets.Add after:=l1.Sheets(l1.Sheets.Count)
        Set h1 = l1.ActiveSheet
        h1.Name = Num
    End If
    '
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
    If uc < Columns("B").Column Then uc = Columns("B").Column
    h2.Range("O42:O99").Copy h1.Cells(1, uc)
    l2.Close False
    Application.ScreenUpdating = True
    'MsgBox "Copia realizada", vbInformation
    End Sub

Un abrazo,

Oscar

1 respuesta

Respuesta
1

.11/10/16

Buenas, Oscar

De acuerdo a lo solicitado, te agregue en la rutina que me pasaste las instrucciones necesarias:

Sub Copiar_adjuntos()
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    Ruta = "C:\Users\z003bpca\Desktop\Bitacora\"
    arch = "copy_Reporte.xls"
    If Dir(Ruta & arch) = "" Then
        MsgBox "El archivo Reporte no existe en la ruta", vbCritical
        Exit Sub
    End If
    '
    Set l2 = Workbooks.Open(Ruta & arch)
    Set h2 = l2.Sheets("Sheet0")
    Num = h2.Range("D5").Text
    If Num = "" Then
        MsgBox "La celda D5 no contiene datos", vbExclamation
        l2.Close False
        Exit Sub
    End If
    If IsNumeric(Num) Then
        Num = "" & Val(Num)
    End If
    '
    existe = False
    For Each h In l1.Sheets
        If h.Name = Num Then
            existe = True
            Set h1 = h
            Exit For
        End If
    Next
    '
    If existe = False Then
        l1.Sheets.Add after:=l1.Sheets(l1.Sheets.Count)
        Set h1 = l1.ActiveSheet
                'copia de columna A de Hoja Datos
                Sheets("Datos").Visible = True
                Sheets("Datos").Columns("A").Copy h1.Columns("A")
                Sheets("Datos").Visible = False
        h1.Name = Num
    End If
    '
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
    If uc < Columns("B").Column Then uc = Columns("B").Column
    h2.Range("O42:O99").Copy h1.Cells(1, uc)
            'ajusta columnas de B en adelante a 40
                h1.Columns.ColumnWidth = 40
                h1.Columns("A:A").EntireColumn.AutoFit
    l2.Close False
    Application.ScreenUpdating = True
    'MsgBox "Copia realizada", vbInformation
    End Sub

Te dejé indicado en el código lo que agregué.

Espero que funcione correctamente en tu archivo. En el mio, lo hizo.

Saludos

Fernando

.

¡Gracias! 

Nuevamente Fernando.

Un Abrazo.

Oscar

.

Muy bien! Me alegro de que te haya servido.

Abrazo

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas