Guardar datos en otro libro de Excel VBA.

Tengo una macro que me guarda datos en otra hoja de excel, pero ahora necesito que me guarde los mismos datos en otro libro.

La macro que estoy usando es esta

Ith Sheet2
  x = .Range("B" & Rows.Count).End(xlUp).Row + 1   'ATENCIÓN
     If x = 7 Then
     '...... 'si se trata de la primera fila habrá que agregar las fórmulas
     Else
        .Range("B" & x) = [F6]
        .Range("C" & x) = [C5]
        .Range("C" & x) = [C5]
        'arrastrar las fórmulas de la línea de arriba
        .Range("D" & x - 1 & ":L" & x - 1).Copy
         .Range("D" & x & ":L" & x).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End If

2 Respuestas

Respuesta
2

Curso de macros recomendado:

Excel vba dictionary parte 3 - YouTube

Nota: En la descripción del vídeo está el enlace para que descargues el archivo con todos los ejercicios.

--------------------------------

Prueba lo siguiente.

Actualiza tus datos en esta línea:

Workbooks("otro libro").Sheets("Hoja1").Range("D" & x & ":L" & x).PasteSpecial _

Nota: El "otro libro" deberá estar abierto para la ejecución de la macro.

  With Sheet2
    x = .Range("B" & Rows.Count).End(xlUp).Row + 1   'ATENCIÓN
    If x = 7 Then
      '...... 'si se trata de la primera fila habrá que agregar las fórmulas
    Else
      .Range("B" & x) = [F6]
      .Range("C" & x) = [C5]
      .Range("C" & x) = [C5]
      'arrastrar las fórmulas de la línea de arriba
      .Range("D" & x - 1 & ":L" & x - 1).Copy
      'cambia "otro libro" y "hoja1" por los nombres donde vas a pegar
      Workbooks("otro libro").Sheets("Hoja1").Range("D" & x & ":L" & x).PasteSpecial _
        Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
      Application.CutCopyMode = False
    End If
  End With

Curso de Excel recomendado:

Curso de excel. Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube

Sal u dos Dante Amor

Respuesta
2

En tu consulta anterior, todo se guardaba en hoja 'Project':

'Se guardan los datos en la hoja ProjectScheule
With Sheets("ProjectSchedule")
     x = .Range("B" & Rows. Count).End(xlUp). Row + 1 'ATENCIÓN 

Si ahora, quieres guardar lo mismo en otro libro, debes mencionarlo solamente al inicio en la línea del With, que es donde se indica cuál es la hoja de destino:

'Se guardan los datos en la hoja ProjectScheule
With Workbooks("FiltroAvanzado.xlsm").Sheets("Hoja3")
     x = .Range("B" & Rows.Count).End(xlUp).Row + 1   'ATENCIÓN 
     If x = 7 Then
        '--------------
        'resto de las instrucciones
     End If
End Wtih

Muchas gracias, Elsa.

¿ Y ese libro esta cerrado funcionaria igual? o ¿Tendría que estar abierto?

Hola, Elsa

Cuando le doy a ejecutar el código me sale el error 

Subíndice fuera del intervalo.

Este es el código que estoy utilizando:

With Workbooks("Control de costes.xlsm").Sheets("Hoja1")
  x = .Range("A" & Rows.Count).End(xlUp).Row + 1   'ATENCIÓN
     If x = 8 Then
     '...... 'si se trata de la primera fila habrá que agregar las fórmulas
     Else
        .Range("A" & x) = [V6]
        .Range("C" & x) = [S5]
        .Range("D" & x) = [S9]
        'arrastrar las fórmulas de la línea de arriba
        .Range("C" & x - 1 & ":T" & x - 1).Copy
         .Range("C" & x & ":T" & x).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End If
  End With
  

Si, el libro tiene que estar abierto ya.

Ese error se produce cuando hacés mención a libros, hojas o rangos que no existen con ese nombre.

Se puede incluir en la macro algunas instrucciones para abrir el libro destino... y luego del pase cerrarlo.

Pero como ya empecé mis vacaciones, quizás Dante (que también te respondió aquí) pueda apoyarte a terminar esta consulta agregándote esas instrucciones.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas