Macro copiar y pegar

Hectorpm me pregunto si me puedeayudar con una macro qu me copieun rango de celdas de excel con sus características(ejemplo si hay celdas combinadas o tienen margenes) y luego lo pegue en otra hoja de un libro diferente a partir de una fila especifica</span>

2 respuestas

Respuesta
1

Si es posible hacer lo que pide pero con la limitante de que los dos libros deben estar abiertos. Puede hacerse con el siguiente código:

Range("B3:E10").Select 'Selección del rango a copiar

Selection. Copy 'Copiar
Windows("Libro Destino.xls").Activate 'Activa el libro destino
Range("B6").Select 'Selecciona la ubicación a donde se van a copiar las celdas
ActiveSheet. Paste 'Pegar
Windows("Libro Origen.xls").Activate 'Regresa al libro origen


Si me das mas detalle, o si tienes un archivo de ejemplo, podría trabajar en una solución mas elaborada que se ajuste a tus necesidades

esta perfecto

pero me gustaría saber como hago para que me guarde en un libro con un nombre derminado como por ejemplo "pedido" y una determinada llamada "lunes" y con uancho de columna de 8

gracias.

Para abrir un libro llamado "Pedido":

Workbooks.Open Filename:="C:\...\Pedido.xls"

Para seleccionar una hoja llamada "Lunes":

Sheets("Lunes").Select

Para definir ancho de columna en 8:

Columns("B").Select

Selection.ColumnWidth = 8

Para guardar el libro:

ActiveWorkbook. Save

Respuesta
1

Creo que te equivocaste de persona a quien hacer la pregunta. ¿Correcto?

que pena

pero la pregunta va dirigida a ti

gracias

De acuerdo, me pondré a mirarlo, pero como puedes comprobar yo no soy hectorpm.

Aquí tienes una forma de hacerlo. Hay dos procedimientos o funciones auxiliares (una de ellas no es mia) :

Function GetFilenameFromPath(ByVal strPath As String) As String
'sacado de la red
' Returns the rightmost characters of a string upto but not including the rightmost '\'
' e.g. 'c:\winnt\win.ini' returns 'win.ini'
 If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
 GetFilenameFromPath = GetFilenameFromPath(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
 End If
End Function
Sub CopiaRangoALibro(rini As String, libro As String, hoja As String, rfin As String)
'Copia un rango de la hoja actual, a otro libro, en la hoja y a partir de la celda indicados
'dfin debe ser una celda tipo "A1", "J54" ...
ActiveSheet.Range(rini).Copy
Workbooks.Open Filename:=libro
Worksheets(hoja).Activate
Range(rfin).Select
ActiveSheet.Paste
Workbooks(GetFilenameFromPath(libro)).Close SaveChanges:=True
End Sub

Y una ejemplo de la macro que tienes que construir sería el siguiente:

Sub PruebaCopia()
Dim s as String
s = "C:\userdata\miusuario\Desktop\Libro_ejemplo.xlsx"
Call CopiaRangoALibro("e8:g14", s, "Sheet2", "B2")
End Sub

En este ejemplo el rango E8:G14 de libro y hoja activos se copia al "Libro_ejemplo.xlsx en la hoja2 a partir de la celda B2 y después se cierra el libro. Tendrás que adaptarlo a tus necesidades o gustos.

Añade tu respuesta

Haz clic para o