Macro para Importar Columnas de un Libro a Otro

Tengo una tabla de Excel de datos que corresponde a la nomina de mi empresa. Necesito importar a otro libro solo ciertas columnas y esto quiero hacerlo con un botón en el libro de destino, es decir, cada vez que necesite los datos actualizados el usuario presionara un botón para importarse los datos del libro de nomina. Yo se configurar el botón; pero necesito la macro que se traiga la información.

1 Respuesta

Respuesta
1

Puedes responder en el siguiente orden:

1. Nombre del libro de la nómina

2. Nombre de la hoja de la nómina

3. Columnas a copiar

4. Fila inicial de la columna a copiar

5. Nombre del libro destino

6. Nombre de la hoja destino

7. En cuál columna se va a pegar

8. El libro de la nómina va a estar abierto

9. Si el libro de la nómina está cerrado, cómo se llama la carpeta donde está libro

10. Si no quieres poner el nombre de la carpeta, entonces quieres seleccionar el libro de alguna carpeta


1. "nomina" (en mayúscula)

2. "personal activo" (en mayúscula)

3. B; D;E;H

4. 2

5. "parte diario" (en mayúscula)

6. "NOMINA"

7. G; I; B; H en esta posicion especifica

8. NO

9. RRHH

10. NO

La ruta completa cuál sería:

9. RRHH

Dentro la misma carpeta donde vas a tener el libro de la macro mas "RRHH", es decir:

estelibro\RRHH\

Prueba la siguiente macro en tu libro "parte diario". Guarda el libro como habilitado para macros.

Sub CopiarColumnas()
'Por Dante Amor
  Dim l2 As Workbook
  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim u As Long
  '
  Application.ScreenUpdating = True
  Set sh1 = Sheets("NOMINA")
  Set l2 = Workbooks.Open(ThisWorkbook.Path & "\RRHH\" & "nomina.xlsx")
  Set sh2 = l2.Sheets("PERSONAL ACTIVO")
  '
  u = sh2.Range("B" & Rows.Count).End(3).Row
  sh1.Range("G2").Resize(u - 1).Value = sh2.Range("B2:B" & u).Value
  sh1.Range("I2").Resize(u - 1).Value = sh2.Range("D2:D" & u).Value
  sh1.Range("B2").Resize(u - 1).Value = sh2.Range("E2:E" & u).Value
  sh1.Range("H2").Resize(u - 1).Value = sh2.Range("H2:H" & u).Value
  l2.Close False
  '
  Application.ScreenUpdating = False
End Sub

Prueba y comentas.

la ruta es \\192.168.123.5\Compartidos\Areas\RRHH

Si está en una carpeta específica, entonces cambia esta línea:

Set l2 = Workbooks.Open(ThisWorkbook.Path & "\RRHH\" & "nomina.xlsx")

Por esta:

Set l2 = Workbooks.Open("W:\PARTE DIARIO\" & "DATOS ACTUALIZADOS.xlsx")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas