macro

10/08/2007 - 18:12 por leslie | Informe spam
Hola

tengo la necesidad de una macro la cual dentro de un libro me actualice una
hoja donde tengo una lista de empleados, en base a un archivo que me envian
todos los dias, pero yo necesito que esta hoja con la lista este oculta para
que quien utilice el libro no la pueda ver, pero ellos mediante un boton,
corran la macro de actualizacion, y la macro me abra la hoja, la actualice y
la deje oculta.

yo lo intente pero me genera un error y esta es la codificacion:

Sub macro()
'
'Macro
' Macro grabada el 10/08/2007
'

'
Sheets("GUARDIAS").Visible = True
Range("B2:J2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("B2").Select
ChDir "C:\"
Workbooks.Open Filename:="C:\guardias.xls"
Range("B2:G2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("nomina diario.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("B2").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
Mi error me lo envia en la frace: Selection.PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Espero me puedan ayudar

gracias
saludos
 

Leer las respuestas

#1 Ivan
10/08/2007 - 19:23 | Informe spam
hola Leslie,

si te he entendido bien (que no estoy muy seguro) prueba [con copias]
la macro que te pongo al final, pero 1º te comento los requisitos (que
+/- son los que expones)

1º) el codigo debes pegarlo en un modulo normal del editor de VBA, del
libro que contiene la hoja oculta ("GUARDIAS")

***pasos por si los desconoces>>> alt+F11 => en la ventana explorador
de proyectos <normalmente esta a la izquierda, y si no esta pulsa Ctrl
+R> asegurate de que el seleccionado es el proyecto correspondiente a
dich libro [+/- pondra:'VBProjet("nomina diario.xls")'] ), una vez
segura => menu 'Insertar' => 'Modulo'

2º) ajustandolo a tu codigo ( por cierto, creo que este seria una de
las [creo que varias] causas del error) el rango borrado en la hoja
"GUARDIA" iria de la columna b a la J, mientras que el copiado del
libro "guardias.xls" va de la b a la g, con lo que el rango copiado y
el de destino son necesariamente diferentes [ en estos casos lo suyo
es pegarlo en la primera celda [en realidad seria a partir de la
primera celda] del rango de destino]

no se si sera un error de trranscripcion, pero si es asi corrige lo
evidente. Yo de momento lo he dejado tal cual y no afectaria al
funcionamiento (se pega a partir de B2)

3º) me surgen algunas dudas que he adaptado de la siguiente manera:

a) no tengo claro cual es la primera celda del rango a manipular,
pero he dado por hecho que es la B2 [supongo que la fila 1 contendria
los titulos

b) he dado por hecho que las filas a borrar/actualizar van desde la
2 a la ultima con datos, aunque las repeticiones del end(xldown)
levantan dudas [ de hecho con mi supuesto anterior estarias
seleccionando/copiando/pegando el rango que va desde la ultima fila
con datos hasta la ultima de la hoja <normalmente la 65536> (aunque
quizas este equivocado)

c)tambien he supuesto que la 1º columna ('B') siempre va a tener
datos si la fila los tiene

d) el libro que abres tiene una sola hoja, o al menos estas segura de
que siempre se va aabrir en la hoja adecuada (donde esta el rango a
copiar)

Sub CopiarRango()
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("GUARDIAS")
If .Range("b2") = "" Then Exit Sub
.Range("B2:J" & .[b65536].End(xlUp).Row).ClearContents
Workbooks.Open "C:\guardias.xls"
Range("B2:G" & [b65536].End(xlUp).Row).Copy
.Range("b2").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
ActiveWorkbook.Close False
End With
End Sub

a ver si hay suerte

un saludo
ivan

PD: la hoja no se muestra pues he supuesto que no es necesario. En
cuanto a ejecutarla, asignsela a un boton o prueba con F5 desde el
editor o con alt+F8 desde excel y seleccionarla del cuadro y ejecutar

Preguntas similares