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

#1 Ivan
24/10/2006 - 04:45 | Informe spam
Hola Newton

creo que deberias poner sheets.activate en vez de sheets.select, pero
creo que luego te ibas ha encontrar algun error mas

de todas formas y aunque no tengo demasiada idea, creo que un codigo
parecido a este seria mas eficaz:(OJO no esta probado ni demasiado
depurado)

Sub Abrir_Libro2()
Application.ScreenUpdating = False
on error resume next
Workbooks.Open Filename:="C:\Prog Planilla\Departamentos.xls"
on error goto 0
With Workbooks("Departamentos.xls")
.Sheets("Listado").[B6:C50].Copy
'' he supuesto que el libro de destino se llama "Empleados.xls" y la
hoja "Empleados"
Workbooks("Empleados.xls").Sheets("Empleados").Range("A2") _
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
.Close
End With
'' he supuesto que la hoja "Menu" tambien esta en el libro
"Empleados.xls"
Workbooks("Empleados.xls").Sheets("Menu").Activate
Application.ScreenUpdating = True
End Sub

vete con ojo y comentas si te sirve

un saludo y hasta pronto
ivan
Respuesta Responder a este mensaje
#2 KL
24/10/2006 - 11:34 | Informe spam
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
#3 Isaac Newton
24/10/2006 - 17:10 | Informe spam
Gracias KL, abajo respondo tus incognitas.

Creo que lo unico que haria falta es que despues de copiar los datos del
archivo "Departamentos.xls" se vaya a la hoja "Departamentos" en el archivo
"Empleados.xls" y me lo pegue en la hoja "A2"

Saludos,


"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?


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) 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)?


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" pertenece al libro desde el cual se ejecuta el codigo?


La hoja menu en efecto si pertenece a este libro donde se esta ejecutando


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
#4 Isaac Newton
24/10/2006 - 17:41 | Informe spam
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
#5 Ivan
24/10/2006 - 17:51 | Informe spam
hola

has probado a intentar adaptar el codigo que te pase (seguramente es
bastante peor que el de KL , pero a mi me funciona perfectamente
añadiendole cutcopymode=false), asi adaptado hace lo que pides

Private Sub Workbook_Open()
Application.ScreenUpdating = False
On Error Resume Next
Workbooks.Open Filename:="C:\Documents and Settings\Ivan\Mis
documentos\Dialogos FORO desde sept-06\Departamentos.xls"
On Error GoTo 0
With Workbooks("Departamentos.xls")
.Sheets("Listado").[B6:C50].Copy
Workbooks("Empleados.xls").Sheets("Departamentos").Range("A2") _
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
.Close
End With
Workbooks("Empleados.xls").Sheets("Menu").Activate
Application.ScreenUpdating = True
End Sub
Isaac Newton ha escrito:

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 Respuesta Tengo una respuesta
Search Busqueda sugerida