¿Qué código VBA me permite copiar un rango de celdas llenas y pegarlo en otro libro?
Buenas Tardes, de antemano agradezco su atención y colaboración.
Estoy desarrollando un código en VBA Excel 2010 pero he tenido bastantes problemas con la siguiente situación:
1. Tengo un rango de celdas ("o6:ah105") que contiene unas fórmulas que llaman alguna información de otra hoja. A veces no se llenan todas las filas, por lo que quiero que se copien únicamente las filas llenas.
2. Al quiere copiarlas me di cuenta que la fórmula impide que el rango de celdas sea leído como espacio en blanco, por lo que cree una macro que copia el rango y celdas y las vuelve a pegar en el mismo lugar en formato de valores (123).
3. Al intentar pasar al libro de destino solo la información que esta llena tengo un error (no de código, sino de procedimiento), se copia todo el rango sin importar si están vacías o no. La hoja de destino no puede tener "baches" o espacios en blanco, ya que es una base de datos de consulta.
Bueno no más carreta y acá esta lo que he escrito (He subrayado la info con la que tengo el problema).
Sub Copycat()
Range("N3").Select
If ActiveCell.Value = "R" Then
UserForm4.Show
Else
UserForm5.Show
Application.ScreenUpdating = True
Sheets("xdata").Visible = True
Worksheets("xdata").Select
Range("b3:aY3").Select
Selection.Copy
Workbooks.Open Filename:= _
"T:\SUPPLIES\1. BASES DE DATOS\SCM_BBDD_ORDENES_DE_COMPRA_SERVICIO_V1JUL2012.xlsm"
Worksheets("BBDDOSC").Select
Range("D40003").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Save
ActiveWindow.Close
Sheets("xdata").Visible = False
Worksheets("OC").Select
Range("N3").Select
ActiveCell.FormulaR1C1 = "R"
Range("a1").Select
ActiveWorkbook.Save
UserForm3.Show
Sheets("xdata").Visible = True
Worksheets("xdata").Select
Range("o6:ah105").Select "este es mi rango de celdas que llama info de otra hoja"
Selection.Copy
Range("o6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
"lo que hice fue pegar valores en el mismo rango de celdas"
Range("O6").Select
ActiveCell.Offset(115, 0).Select "115 la última fila del rango relevante para identificar si esblanco o no...."
ActiveCell.End(xlUp).Select "acá inicia a subir para buscar la última celda llena"
ActiveCell.Offset(0, 19).Select "como estaba parado en un columna que tenía la info pero necesitaba copiar toda la "fila" dentro del rango, pues le digo que se mueva 19 columnas a la derecha"
Range("o6", ActiveCell).Select "acá se supone que me elige el rango desde la celda inicial hasta donde esta el último dato de la fila y columnas"
Selection.Copy
Workbooks.Open Filename:= _
"T:\SUPPLIES\1. BASES DE DATOS\SCM_BBDD_Master Data Base.xlsm"
Worksheets("MDB").Select
ActiveSheet.Range("I10002").Select "le digo que vaya a la última celda"
Selection.End(xlUp).Select "suba hasta donde encuentre un dato"
Selection.Offset(1, 0).Select "cuando encuentre el dato baje una celda"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
"Cuando está pegando la info en este libro copia las 100 celdas con las 19 columnas, y puede pasar que solo 3 celdas tengan info..., he aquí el problema...¿pero...? Se supone que cuando vuelvo a ejecutar el código excel vuelve al libro de destino y lee las celdas vacías (en este caso debería leer solo las que no tengan datos, sin embargo lo que hace es copiar debajo de la última celda vacía que copió en la anterior ejecución.. @#$"%$%"!!!!!
Finalmente"
ActiveWorkbook.Save
ActiveWindow.Close
Sheets("xdata").Visible = False
Worksheets("OC").Select
Range("a1").Select
ActiveWorkbook.Sabe
UserForm6.Show
End If
End Sub
AYUDAAA POR FAVOR!!!!!