Foros del Web » Soporte técnico » Ofimática »

Macro para copiar un rango de celdas en excel y pasar a hoja 2

Estas en el tema de Macro para copiar un rango de celdas en excel y pasar a hoja 2 en el foro de Ofimática en Foros del Web. Un favor enorme tengo una nota de cobranza y quiero que al imprimir copie todo el rango seleccionado a la hoja dos, solo que el ...
  #1 (permalink)  
Antiguo 15/01/2011, 09:12
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Macro para copiar un rango de celdas en excel y pasar a hoja 2

Un favor enorme tengo una nota de cobranza y quiero que al imprimir copie todo el rango seleccionado a la hoja dos, solo que el rango varia segun la cantidad de informacion que ingreso.

Desde ya un millon de gracias
  #2 (permalink)  
Antiguo 15/01/2011, 11:35
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Bienvenido a ForosdelWeb.

Prueba esto:
Código:
Sub copiarypegar()
'Seleccionamos todo el área contínua
'de datos, desde la celda donde estamos situados
ActiveCell.CurrentRegion.Select
'Copiamos
Selection.Copy
'Pegamos en A1 de la hoja 2
Sheets("Hoja2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
End Sub
Salu2
  #3 (permalink)  
Antiguo 16/01/2011, 16:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Está bueno 3pies, solo le falta la rutina para insertar en la hoja2, pero, seguido de la ultima fila(celda) ocupada

Sub copiarypegar()
'Seleccionamos todo el área contínua de datos, desde la celda donde estamos situados
Range("a3:i15").Select 'seleciona el rango especifico
ActiveCell.CurrentRegion.Select
'Copiamos
Selection.Copy
'Pegamos en A2 de la hoja 7
Sheets(7).Select
Range("A2").Select 'el control se hará sobre la columna A, a partir de la fila
While ActiveCell.Value <> "" 'Busca la ultima fila
ActiveCell.Offset(1, 0).Select 'si la celda contiene datos, pasa a la fila siguiente
Wend

ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
End Sub
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #4 (permalink)  
Antiguo 17/01/2011, 15:37
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Muchas gracias por sus respuestas

JoaoM tengo las siguientes consultas :

Mi hoja 2 tiene nombre se llama NCC como la selecciono para que copie ahi
y mi rango es "a2:g21" pero al pasar los datos no toma todo el rango; por si acaso tengo una celda combinada la a3
Gracias
  #5 (permalink)  
Antiguo 18/01/2011, 17:10
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Sub copiarypegar()
'Seleccionamos todo el área contínua de datos, desde la celda donde estamos situados
Range("a3:i15").Select 'seleciona el rango especifico
ActiveCell.CurrentRegion.Select
'Copiamos
Selection.Copy
'Pegamos en A2 de la hoja 7
Sheets("NCC").Select
Range("A2").Select 'el control se hará sobre la columna A, a partir de la fila
While ActiveCell.Value <> "" 'Busca la ultima fila
ActiveCell.Offset(1, 0).Select 'si la celda contiene datos, pasa a la fila siguiente
Wend
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A2").Select
End Sub

Existe esta opcion. Para que si alguien te cambia el nombre a las hojas o posicion de ellas, coloca esto en ThisWorkbook

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Esto se ejecutará justo unos instantes antes de guardar el fichero
If Hoja1.Name <> "¿?" Then Hoja1.Name = "¿?"
If Hoja2.Name <> "NCC" Then Hoja2.Name = "NCC"
If Hoja3.Name <> "¿?" Then Hoja3.Name = "¿?"

'ect ect
End Sub

En lo rojo colocas el nombre de tus hojas.
Esto por si alguien cambia el nombre de hojas, al cerrarse el libro todo vuelve como antes.
Si sucede el cambio, el codigo referente a la hoja, no funciona.
Para evitar eso, lo mejor es en el editor de VBA, a la izquierda selecionas la hoja, abajo le das el nombre tuyo para definitivo
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 18/01/2011 a las 17:36
  #6 (permalink)  
Antiguo 20/01/2011, 10:16
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Gracias mil pro compartir tus conocimientos, esta barbaro el codigo ahora te puedo molestar con otra pregunta más ?
como inserto 41 filas antes de copiar mi rango a la hoja NCC ?
o sea copia el rango de mi hoja Nc a mi hoja NCC y despues de copiarlo que mi inserte automaticamente 41 filas en blanco sera que se puede ?
gracias de antemano
  #7 (permalink)  
Antiguo 21/01/2011, 14:38
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: Macro para copiar un rango de celdas en excel y pasar a hoja 2

Y esas 41 filas ¿quedaran entremedio de filas ocupadas? o ¿crear 41 filas después de la última ocupada?
Explícate mejor y completo para que se entienda

A lo mejor no soy capaz de darte ayuda por mis escasos conocimientos pero, algún usuario conocedor podrá hacerlo

Edito:

Te consegui este codigo para un boton, tu verás si te sirve o no. Lo pondrás en un modulo y el comando para el boton es el primer, Sub InsertRowsAndFillFormulas_caller

Este, si la celda selecionada contiene formula, la coservará y copiará la formula a las celdas siguientes creadas

Cita:
Sub InsertRowsAndFillFormulas_caller()
Call InsertRowsAndFillFormulas
End Sub

Sub InsertRowsAndFillFormulas(Optional vRows As Long = 0) 'Agrega cantidad de lineas hacia abajo segun la celda seleccionada
' Documented: http://www.mvps.org/dmcritchie/excel/insrtrow.htm
' selección de fila basado en la celda activa
Dim x As Long
ActiveCell.EntireRow.Select 'Segun celda selecionada, seleciona toda la fila
If vRows = 0 Then
vRows = Application.InputBox(prompt:="How many rows do you want to add?", Title:="Add Rows", _
Default:=1, Type:=1) 'Por defecto presenta 1, una sola fila. Puedes decirle cuantas quieres
If vRows = False Then Exit Sub
End If

'si sólo quiere agregar celdas y no filas enteras, elimine EntireRow "en la siguiente línea

Dim sht As Worksheet, shts() As String, i As Long
ReDim shts(1 To Worksheets.Application.ActiveWorkbook.Windows(1).S electedSheets.Count)
i = 0
For Each sht In _
Application.ActiveWorkbook.Windows(1).SelectedShee ts
Sheets(sht.Name).Select
i = i + 1
shts(i) = sht.Name

x = Sheets(sht.Name).UsedRange.Rows.Count 'corrección última celda

Selection.Resize(rowsize:=2).Rows(2).EntireRow.Res ize(rowsize:=vRows).Insert Shift:=xlDown

Selection.AutoFill Selection.Resize(rowsize:=vRows + 1), xlFillDefault

On Error Resume Next 'manejar posible error
' Agrega filas aun conservando la o las formula(s) de la(s) celda(s) celecionada
Selection.Offset(1).Resize(vRows).EntireRow.Specia lCells(xlConstants).ClearContents
Next sht
Worksheets(shts).Select
End Sub
Si colocas en S. google esto, macro insertar filas en excel verás miles de opciones

Puede que este te sea mas simple
Cita:
Sub Insertar_filas()
'
' Insertar el numero de filas dado por el usuario
Dim a As Integer
a = 0
a = InputBox("Cuantas filas quieres insertar? ")
While a > 0
ActiveCell.Offset(1, 0).Range("a1").Select
Selection.EntireRow.Insert
a = a - 1
Wend
End Sub
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 21/01/2011 a las 18:28

Etiquetas: celdas, copiar, excel, hoja, macro, pasar, rango
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:03.