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

#11 KL
24/10/2006 - 20:52 | Informe spam
Hola Ivan,

Buena vista! Muchas gracias por la observacion. Te comento que no es necesario el uso de CutCopyMode en mi codigo y la unica razon
por la que esta ahi es que empece con la version que usaba Copy Paste y luego me olvide de liquidar las sobras. Y no tienes por que
disculparte cada vez que preguntes o hagas un comentario. Creo que estamos aqui entre otras cosas para aprender y para ayudar.

Saludos,
KL


"Ivan" wrote in message news:
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
#12 Ivan
24/10/2006 - 21:49 | Informe spam
gracias KL

una duda abortada

en cuanto a mis disculpas, se que tienes razon, pero es una de esos
defectos que resulta dificil evitar

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#13 Ivan
26/10/2006 - 00:04 | Informe spam
hola KL

observando/estudiando tu codigo de nuevo (tiene unas cuantas novedades
para mi) hay otro par de cosas que me llaman especialmente la atencion:
->

.-duda 1nesima.->pensaba que al abrir un libro este se convertia
automaticamente en el activo, pero por lo que creo ver en este caso no
es asi (o no lo parece).

Supongo que se debe a la forma de hacer referencia a el mediante 'With'
(otra novedad para mi, su uso de esta forma) y que esto sigue
manteniendo activo el libro 'llamante'.

¿o sí es el activo(el abierto), pero al hacer referencia a x hojas
sin el punto, estas se 'buscan' fuera de él?


.-¿la? otra duda.-> el uso de resize (aunque no lo he probado, y lo
mismo voy a decir una burrada).¿no funcionaria igual
->Sheets("Departamentos").Range("A2:B46") .value=.Value?

Pero viniendo de ti (y espero que no suene a adulacion) me extrañaria
que no tubiera su porque.¿quizas simplemente para no tener que
calcular el rango 'coincidente'?

bueno, como ves, posiblemente son dudas de esas tontas, pero de las que
se quedan agarradas y no es facil encontrar las respuesta.

si puedes aclararmelas de nuevo, te lo agradezco

un saludo
Ivan
Respuesta Responder a este mensaje
#14 KL
26/10/2006 - 00:43 | Informe spam
Hola Ivan,

.-duda 1nesima.->pensaba que al abrir un libro este se convertia
automaticamente en el activo, pero por lo que creo ver en este caso no
es asi (o no lo parece).



Si que es asi. Al abrir un libro se hace activo.

¿o sí es el activo(el abierto), pero al hacer referencia a x hojas
sin el punto, estas se 'buscan' fuera de él?



1. Como seguramente sabes para manipular la mayoria de los objetos no es necesario que esten activos.
2. A diferencia de los modulos estandar (p.ej. Modulo1), cuando el procedimiento se encuentra en un modulo de clase (ThisWorkbook,
Hoja, UserForm, etc.) si el objeto relevante no se califica (Libro, Hoja, UserForm, etc.) se asume por defecto el objeto contenedor
del codigo (en los modulos estandar es por defecto el objeto activo). P.ej.:
- la instruccion "Sheets(1).Range("A1")" colocada dentro del modulo "ThisWorkbook" equivale a "Me.Sheets(1).Range("A1")" o a
"ThisWorkbook.Sheets(1).Range("A1") "
- la instruccion "Range("A1")" colocada dentro del modulo de la hoja "Hoja1" equivale a "Me.Range("A1")" o a
"ThisWorkbook.Sheets("Hoja1").Range("A1")"
- la instruccion "ListBox1.Value" colocada dentro del modulo del UserForm "UserForm1" equivale a "Me.ListBox1.Value" o a
"ThisWorkbook.UserForm1.ListBox1.Value"
etc.
3. Por tanto al referirme a las hojas sin punto me refiero a las hojas de ThisWorkbook que no esta activo y lo hago activo solo
mediante: Sheets("Menu").Activate

.-¿la? otra duda.-> el uso de resize (aunque no lo he probado, y lo
mismo voy a decir una burrada).¿no funcionaria igual
->Sheets("Departamentos").Range("A2:B46") .value=.Value?



El codigo en principio esta preparado para que el rango Range("B6:C50") sea variable - siempre procure reducir el numero de
constantes al maximo para que al cambiar una cosa el resto se ajuste de forma automatica. En este codigo se da el caso de que el
rango es fijo, pues bien - me he ahorrado el trabajo de calcular las referencias :-). Pero la respuesta es si, se pudo haber puesto
directamente Range("A2:B46").

Saludos,
KL
Respuesta Responder a este mensaje
#15 Ivan
26/10/2006 - 00:51 | Informe spam
hola KL y muchas gracias de nuevo

no habia caido en lo de thisworkbook (no acabo de automatizar el no
usar los calificadores, si no es en los formularios, a pesar de
saberlo). eso resuelve mi duda del todo

con la segunda suponia que seria algo parecido, pero por si acaso habia
algun otro motivo que se me escapaba te lo he comentado.

lo dicho, muchas gracias

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida