error en macro..!

24/10/2006 - 03:42 por Isaac Newton | Informe spam
Tengo la siguiente macro pero me manda error en la linea:
Sheets("Listado").Select, y no se oprque que puede ser?, lo que trato de
hacer es copiar cierto rango de un archivo que tengo. Espero que me puedan
ayudar.

Private Sub Workbook_Open()
Application.ScreenUpdating = False
'copia departamentos
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
Sheets("Listado").Select
Range("B6:C50").Select
Selection.Copy
Windows("Empleados.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Windows("Departamentos.xls").Activate
ActiveWorkbook.Close
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub

Saludos,

Preguntas similare

Leer las respuestas

#6 KL
24/10/2006 - 18:29 | Informe spam
Hola Isaak,

No te puedo ayudar hasta que me contestes las preguntas 1 y 3 de mi mensaje anterior ;-)
De momento incluida la aclaracion que has dado para mi pregunto numero 2 el codigo queda asi:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="C:\Prog Planilla\Departamentos.xls")
With .Sheets("Listado").Range("B6:C50")
Workbooks("Empleados.xls").Sheets("Departamentos").Range("A2") _
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
Application.CutCopyMode = False
.Close True
Sheets("Menu").Activate
End With
Application.ScreenUpdating = True
End Sub

Saludos,
KL


"Isaac Newton" wrote in message news:%
Buenos Dias Otra vez, pude hacerlo con el codigo que tenia arreglandolo unp
oco pero cuando se ejecuta no me congela la pantalla no se porque no esta
funcionando la opcion de ScreenUpdating, adjunto dejo el codigo

Private Sub Workbook_Open()
Application.ScreenUpdating = False
'copia departamentos
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
Workbooks("Departamentos.xls").Sheets("ListadoD").Select
Range("B6:C50").Select
Selection.Copy
Workbooks("Empleados.xls").Activate
Sheets("Departamentos").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Workbooks("Departamentos.xls").Save
Workbooks("Departamentos.xls").Close
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub


"KL" escribio en el mensaje
news:Ons29%
Hola Isaac,

Te da error porque tu codigo se encuentra en el modulo VBA del libro
principal y usas una referencial no calificada hacia una hoja que se
supone que se encuentra en otro libro. Toda referencia no calificada desde
un modulo de clase asume por defecto que se trata del objeto al cual
pertenece el modulo. Por tanto VBA intententa seleccionar
ThisWorkbook.Sheets("Listado") [o bien Me..Sheets("Listado") que es lo
mismo] que me imagino que no existe. Prueba lo siguiente:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="C:\Prog Planilla\Departamentos.xls")
With .Sheets("Listado").Range("B6:C50")
Workbooks("Empleados.xls").ActiveSheet.Range("A2") _
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
Application.CutCopyMode = False
.Close
Sheets("Menu").Select
End With
Application.ScreenUpdating = True
End Sub

en todo caso, no me han quedado claras tres cosas:
1) el libro "Empleados.xls" es el mismo libro desde el cual se ejecuta el
codigo?
2) como se garantiza que a la hora de activar dicho libro estaria activa
la hoja que necesitamos para pegar los datos (en ningun momento se
referencia la hoja expresamente)?
3) la hoja "Menu" pertenece al libro desde el cual se ejecuta el codigo?

Saludos,
KL


"Isaac Newton" wrote in message
news:e$
Tengo la siguiente macro pero me manda error en la linea:
Sheets("Listado").Select, y no se oprque que puede ser?, lo que trato de
hacer es copiar cierto rango de un archivo que tengo. Espero que me
puedan ayudar.

Private Sub Workbook_Open()
Application.ScreenUpdating = False
'copia departamentos
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
Sheets("Listado").Select
Range("B6:C50").Select
Selection.Copy
Windows("Empleados.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Windows("Departamentos.xls").Activate
ActiveWorkbook.Close
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub

Saludos,








Respuesta Responder a este mensaje
#7 Ivan
24/10/2006 - 18:43 | Informe spam
al hilo de las preguntas de KL, en mi codigo he dado por hecho que el
codigo va en el evento Open del archivo "Empleados.xls":, y que las
hojas "Menu" y "Departamentos" estan tambien en este archivo

y por supuesto que cambiarias la ruta de acceso por la tuya->

="C:\Prog Planilla\Departamentos.xls")

PD > aunque quedaria un fleco suelto sin cutcopymode tambien funcionaba
Respuesta Responder a este mensaje
#8 KL
24/10/2006 - 18:48 | Informe spam
Si las hipotesis de Ivan son correctas, mi codigo quedaria en lo siguiente:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="C:\Prog Planilla\Departamentos.xls")
With .Sheets("Listado").Range("B6:C50")
Sheets("Departamentos").Range("A2") _
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
Application.CutCopyMode = False
.Close True
Sheets("Menu").Activate
End With
Application.ScreenUpdating = True
End Sub


Saludos,
KL


"Ivan" wrote in message news:
al hilo de las preguntas de KL, en mi codigo he dado por hecho que el
codigo va en el evento Open del archivo "Empleados.xls":, y que las
hojas "Menu" y "Departamentos" estan tambien en este archivo

y por supuesto que cambiarias la ruta de acceso por la tuya->

="C:\Prog Planilla\Departamentos.xls")

PD > aunque quedaria un fleco suelto sin cutcopymode tambien funcionaba

Respuesta Responder a este mensaje
#9 Ivan
24/10/2006 - 19:08 | Informe spam
hola KL

disculpame por aprovechar para plantearte otra de mis dudas. Veo que,
aun sin usar explicitamente 'paste' (por lo que creo ver, simplemente
'igualando' el rango) tambien estableces CutCopyMode en false. ¿Es
conveniente entonces hacerlo cada vez que se da valor a un rango
igualandolo con otro, o es en este caso por tratarse de otro libro y
cerrarse acto seguido para que cuando se abra no se encuentre en 'modo'
copiar?

disculpa mi morro por aprovechame de nuevo de la ocasion

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#10 Angelo Vernaza
24/10/2006 - 20:05 | Informe spam
Hola KL, estas son las respuestas:

1.El codigo lo ejecuto en This Worbook, para cuando entre al archivo el abra
el libro "Departamentos.xls" y copie la informacion que necesito.
2.No tengo garantizado eso por eso al ejecutarse el macro me esta pegando
los
valores en la hoja que quedo activa, la hoja donde lo quiero seria
"Departamentos"asi que si tendria que hacer referencia a esa hoja
3.La hoja menu en efecto si pertenece a este libro donde se esta ejecutando

Ya eh probado tanto tu codigo como el de Ivan y me funcionan, lo que no
puedo resolver es porque si le tengo la instruccion
Application.ScreenUpdating = False
al inicio y al final la otra igual se ve cuando el va al otro archivo lo
abre y copia? tiene que ver porque es otro archivo el que esta abriendo.

Saludos,


"KL" escribio en el mensaje
news:
Hola Isaak,

No te puedo ayudar hasta que me contestes las preguntas 1 y 3 de mi
mensaje anterior ;-)
De momento incluida la aclaracion que has dado para mi pregunto numero 2
el codigo queda asi:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="C:\Prog Planilla\Departamentos.xls")
With .Sheets("Listado").Range("B6:C50")
Workbooks("Empleados.xls").Sheets("Departamentos").Range("A2")
_
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
Application.CutCopyMode = False
.Close True
Sheets("Menu").Activate
End With
Application.ScreenUpdating = True
End Sub

Saludos,
KL


"Isaac Newton" wrote in message
news:%
Buenos Dias Otra vez, pude hacerlo con el codigo que tenia arreglandolo
unp oco pero cuando se ejecuta no me congela la pantalla no se porque no
esta funcionando la opcion de ScreenUpdating, adjunto dejo el codigo

Private Sub Workbook_Open()
Application.ScreenUpdating = False
'copia departamentos
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
Workbooks("Departamentos.xls").Sheets("ListadoD").Select
Range("B6:C50").Select
Selection.Copy
Workbooks("Empleados.xls").Activate
Sheets("Departamentos").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Workbooks("Departamentos.xls").Save
Workbooks("Departamentos.xls").Close
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub


"KL" escribio en el mensaje
news:Ons29%
Hola Isaac,

Te da error porque tu codigo se encuentra en el modulo VBA del libro
principal y usas una referencial no calificada hacia una hoja que se
supone que se encuentra en otro libro. Toda referencia no calificada
desde un modulo de clase asume por defecto que se trata del objeto al
cual pertenece el modulo. Por tanto VBA intententa seleccionar
ThisWorkbook.Sheets("Listado") [o bien Me..Sheets("Listado") que es lo
mismo] que me imagino que no existe. Prueba lo siguiente:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
With Workbooks.Open(Filename:="C:\Prog Planilla\Departamentos.xls")
With .Sheets("Listado").Range("B6:C50")
Workbooks("Empleados.xls").ActiveSheet.Range("A2") _
.Resize(.Rows.Count, .Columns.Count) = .Value
End With
Application.CutCopyMode = False
.Close
Sheets("Menu").Select
End With
Application.ScreenUpdating = True
End Sub

en todo caso, no me han quedado claras tres cosas:
1) el libro "Empleados.xls" es el mismo libro desde el cual se ejecuta
el codigo?
2) como se garantiza que a la hora de activar dicho libro estaria activa
la hoja que necesitamos para pegar los datos (en ningun momento se
referencia la hoja expresamente)?
3) la hoja "Menu" pertenece al libro desde el cual se ejecuta el
codigo?

Saludos,
KL


"Isaac Newton" wrote in message
news:e$
Tengo la siguiente macro pero me manda error en la linea:
Sheets("Listado").Select, y no se oprque que puede ser?, lo que trato
de hacer es copiar cierto rango de un archivo que tengo. Espero que me
puedan ayudar.

Private Sub Workbook_Open()
Application.ScreenUpdating = False
'copia departamentos
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
Sheets("Listado").Select
Range("B6:C50").Select
Selection.Copy
Windows("Empleados.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Windows("Departamentos.xls").Activate
ActiveWorkbook.Close
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub

Saludos,







Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida