Jump to content
Sign in to follow this  
ELIZABETHFACCI

Copiar hoja de otro libro al activo

Recommended Posts

Les platico, estoy trabajando con un libro al que debo copiar hojas de otro archivo, ya empecé la macro pero me copia las hojas a un libro nuevo en vez de al activo, y además ya copiadas como hago referencia a ellas para agregarle datos en determinadas celdas?

Les anexo la macro con la que estoy trabajando:

Sub copiarh()

Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls"

Dim milibro As Object

Set milibro = ThisWorkbook

Sheets("Checadas").Select

Sheets("Checadas").Copy

milibro.Activate

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

End Sub

Espero me puedan ayudar! Pues solo es una parte de mi problema :S desde ya, mil gracias!

Share this post


Link to post
Share on other sites

Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls"
Dim milibro As Object
Set milibro = ThisWorkbook
Sheets("Checadas").Select

' si no le pones el destino a que libro deseas copiar la hoja siempre te creará un libro nuevo
Sheets("Checadas").Copy after:=milibro.sheets(1)
milibro.Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub[/CODE]

no entendi la parte de copiar la hoja, si lo que quieres copiar es una hoja del libro "milibro" al libro recien abierto o viceversa, si es lo primero tienes que cambiar esta parte

[CODE]Set milibro = ThisWorkbook

milibro.Sheets("Checadas").Copy after:=activeworkbook.sheets(1)
[/CODE]

Share this post


Link to post
Share on other sites

Perfecto! Gracias! Ahora que ya está copiada, como hago referencia a ella (a la hoja recién copiada)? pues necesito pasarle unos valores a estas celdas :

? .Range("D6").Value = nombre(i)

? .Range("C8").Value = id(i)

? .Range("G8").Value = n1

? .Range("C20").Value = fec_ret(i)

Disculpa, que soy nueva en esto del vba :( espero me puedas ayudar!

Share this post


Link to post
Share on other sites

Saludos,

Con el permiso de: chkenshin

sería así:



Sub copiarh()
Application.Calculation = xlCalculationManual

Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls"
Dim milibro As Object
Set milibro = ThisWorkbook
Sheets("Checadas").Select

' si no le pones el destino a que libro deseas copiar la hoja siempre te creará un libro nuevo
Sheets("Checadas").Copy after:=milibro.sheets(1)
milibro.Activate

Cells.Copy
Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False

Application.Calculation = xlCalculationAutomatic
End Sub

[/CODE]

con eso no deberías tener problemas, pues conviertes toda la hoja a valores

Share this post


Link to post
Share on other sites

Tienes mucha razón, mira, por ejemplo:

si necesito agregar hojas a un libro y éstas las defino por medio de un objeto, y hago referencia a sus celdas por medio del objeto así:

Set h2 = Sheets.Add

h2.Range("D6").Value = nombre(i)

h2.Range("C8").Value = id(i)

h2.Range("G8").Value = n1

h2.Range("C20").Value = fec_cheq(i)

h2.Name = "Checadas" & id(i)

------------Volviendo al que estoy trabajando: Como hago para hacer eso de esa misma manera a este código (en el que previamente ya me ayudaste y he corregido) :

Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls"

Dim milibro As Object

Set milibro = ThisWorkbook

Sheets("Checadas").Select

Sheets("Checadas").Copy after:=milibro.sheets(1)

milibro.Activate

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

----------- ? (que objeto uso para hacer referencia a la hoja recién agregada (sheets(1)) pues debo agregarle valores (que previamente tengo almacenados en arreglos) al mismo tiempo a estas celdas? Soy mala para los objetos :(

? .Range("D6").Value = nombre(i)

? .Range("C8").Value = id(i)

? .Range("G8").Value = n1

? .Range("C20").Value = fec_ret(i)

Ojalá me puedas ayudar!

Share this post


Link to post
Share on other sites


milibro.activate
selection.copy
selection.pastespecial xlpastevalues
application.cutcopymode = false

Range("D6").Value = nombre(i)
Range("C8").Value = id(i)
Range("G8").Value = n1
Range("C20").Value = fec_cheq(i)
activesheet.Name = "Checadas" & id(i)
[/CODE]

espero que eso te ayude.

Share this post


Link to post
Share on other sites

Perfecto!! Solo una cosa, funciona cuando guardo la macro en el mismo libro en que la estoy ejecutando, pero si la guardo en el libro personal de excel para mandar llamarla a desde otros libros, no funciona, me marca:

Run-time error '1004': Copy method of worksheet class failed

Sub copiarh()

Dim milibro As Object

Set milibro = thisworkbook

Workbooks.Open Filename:="C:\Users\EFACCI\Desktop\FO-RH23-2.xls"

Sheets("Checadas").Select

Sheets("Checadas").Copy after:=milibro.Sheets(1)-----en esta línea me manda el debug

milibro.Activate

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Range("D6").Value = nombre(i)

Range("C8").Value = id(i)

Range("G8").Value = n1

Range("C20").Value = fec_cheq(i)

activesheet.Name = "Checadas" & id(i)

End Sub

Alguna idea de porque? Pues lo ideal es poder llamar esta macro desde cualquier libro... :(

Share this post


Link to post
Share on other sites

Lo que sucede es que si la dejas en tu libro personal de macros, la líneas

Set milibro = thisworkbook [/CODE]

la tendrías que cambiar por el libro a donde quieres copiar. Ej.

[CODE]Set milibro = Windows("tulibro.xlsm") [/CODE]

Espero te ayude

Share this post


Link to post
Share on other sites

Haa jajaja que errores tan más tontos! :S , en serio, muchas gracias!!

Finalmente lo dejé como:

Set milibro = ActiveWorkbook

Me has salvado de un dolor de cabeza por hoy, espero sobre la marcha ir aprendiendo mucho sobre vba, nuevamente, muchas gracias experto chkenshin! :D, bonito día!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png