Foros del Web » Soporte técnico » Ofimática »

problema con "Const ruta As String = Cells(i, 1).Value"

Estas en el tema de problema con "Const ruta As String = Cells(i, 1).Value" en el foro de Ofimática en Foros del Web. hola que tal , primero que nada muchas gracias por su tiempo, y despues me gustaria comentarles que no se nada de VB y estoy ...
  #1 (permalink)  
Antiguo 31/03/2010, 12:25
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
problema con "Const ruta As String = Cells(i, 1).Value"

hola que tal , primero que nada muchas gracias por su tiempo, y despues me gustaria comentarles que no se nada de VB y estoy haciendo un pequeño codigo que obtiene valores de otros archivos de excel que estan cerrados,

la estructura del excel es la siguiente



2.xlsx contiene la informacion deseada en la celda "A2" asi mismo en 3.xlsx y 4.xlsx

mi codigo esta asi :

Sub macro()
i = 4
j = 0
esta linea dice que se ejecute el bucle hasta que encuentre una celda sin valor
Do While Cells(i, 1) <> ""
esta es la que me esta fallando.me parece que es por que no toma el valor de Cells(i, 1).Value como un string cuando se lo paso al siguiente trozo de codigo
Const ruta As String = Cells(i, 1).Value
aqui abrimos el archivo al que le sacaremos la informacion.
Workbooks.Open Filename:=ruta
aqui guardamos en una variable el valor de la celda que necesitamos del archivo que acabamos de abrir, ya que lo cerraremos
mivariable = Range("A2").Value
aqui cerramos el archivo y no guardamos los cambios
ActiveWindow.Close SaveChanges:=False
aqui grabamos en B4 los datos de ArchivoCerrado("A2") y "j" hace que la proxima vez que el bucle se repita escriba el valor en la celda de abajo.
Range("b4").Offset(j, 0).Select
ActiveCell.FormulaR1C1 = mivariable
aumentamos en 1 a "i" para que ya no busque la ruta de la celda A4 sino que busque en la celda A5
i = i + 1
j = j + 1
mivariable = "";
Loop
End Sub

cuando lo ejecuto me tira el siguiente error : " can´t execute code in break mode"
tengo la leve sospecha que el problema esta aqui Const ruta As String = Cells(i, 1).Value pero por mas que busque no encontre solucion

alguien sabe como puedo arreglarlo ?
espero haberme explicado. muchas gracias desde ya .
saludos

Última edición por mauro770; 31/03/2010 a las 13:35
  #2 (permalink)  
Antiguo 31/03/2010, 14:51
 
Fecha de Ingreso: marzo-2010
Ubicación: Santiago
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: problema con "Const ruta As String = Cells(i, 1).Value"

Hola mauro 770,

¿Donde tienes guardado el código de la Macro, en qué archivo? El mensaje de error que te envía está más relacionado a intentar ejecutar el código una vez que te encuentras en modo de compilación y no al código en si mismo...

Otra consulta, ¿qué deseas hacer con la información que estás rescstando desde la celda A2 de los archivos 2.xlsx, 3.xlsx y 4.xlsx?

¡Saludos!
  #3 (permalink)  
Antiguo 01/04/2010, 09:36
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 17 años, 8 meses
Puntos: 56
Respuesta: problema con "Const ruta As String = Cells(i, 1).Value"

Hola,
No estoy seguro, pero una vez declarada una constante y asignado valor a ella, no se le puede volver a asignar valor, que es justo lo que haces a la entrada del bucle.

Yo sacaría ruta fuera del bucle, al principio del procedimiento, como una simple variable de tipo String, y en el bucle le asignaría el valor, como ahora pero sin declararla.

A ver si así funciona.....

Saludos.
  #4 (permalink)  
Antiguo 02/04/2010, 08:43
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Problema con "Const ruta As String = Cells(i, 1).Value"

Hola! Mauro.
Como bien te anticipa "jchuk" tu error consiste en declarar como "constante" aquello que es "variable"...

De todos modos puedes "esquivar" tanta dificultad -por ejemplo- así:
Código vb:
Ver original
  1. Sub Macro608()
  2. Dim C As Range
  3. Application.ScreenUpdating = False
  4.  
  5. For Each C In Range([a4], [a65536].End(xlUp))
  6.   Workbooks.Open Filename:=C.Value
  7.   C.Offset(, 1).Value = [a2].Value
  8.   ActiveWorkbook.Close False
  9. Next C
  10.  
  11. Application.ScreenUpdating = True
  12. End Sub
Saludos, Cacho.

Etiquetas: ruta, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:33.