Listar todos los controles

26/06/2007 - 01:54 por José A. Castrejón | Informe spam
Hola buenas tardes, estoy haciendo una hoja de excel que tiene (sobre la
hoja, no dentro de un formulario) muchos controles (Labels, textbox y
combobox), los hice con la barra de herramientas "Cuadro de controles" y
entiendo que estos son objetos OLE...

quiero poner en una hoja ("Hoja1") los nombres y las propiedades Left,Top y
Width de todos los controles que estan en esa hoja.


Pense en hacer algo asi como :

dim C as control
For each c in me.controls
next

tambien probe con :
Dim N As Integer, Fila

With Worksheets("INICIO")
FILA = 1
For N = 1 To .OLEObjects.Count
Sheets("HOJA1").Cells(FILA, 1) = .OLEObjects.Name
Sheets("HOJA1").Cells(FILA, 2) = .OLEObjects.top

FILA = FILA + 1
Next N

End With

pero mis pruebas no han dado resultado y la verdad tampoco se mucho mas de
esto.
¿Es posible?

Saludos
José Antonio Castrejón

Preguntas similare

Leer las respuestas

#1 KL
26/06/2007 - 02:19 | Informe spam
Hola José A.,

"José A. Castrejón" wrote in message
news:
Hola buenas tardes, estoy haciendo una hoja de excel que tiene (sobre la
hoja, no dentro de un formulario) muchos controles (Labels, textbox y
combobox), los hice con la barra de herramientas "Cuadro de controles" y
entiendo que estos son objetos OLE...

quiero poner en una hoja ("Hoja1") los nombres y las propiedades Left,Top y
Width de todos los controles que estan en esa hoja.



Prueba esto:

Sub test()
Dim OLEobj As OLEObject
Dim i As Long
With Sheets("Hoja1")
With .Range("A1:E1")
.Value = Array("ID", "Name", "Left", "Top", "Width")
.Font.Bold = True
End With
For i = 1 To ActiveSheet.OLEObjects.Count
Set OLEobj = Sheets("INICIO").OLEObjects(i)
.Cells(i + 1, 1) = i
.Cells(i + 1, 2) = OLEobj.Name
.Cells(i + 1, 3) = OLEobj.Left
.Cells(i + 1, 4) = OLEobj.Top
.Cells(i + 1, 5) = OLEobj.Width
Next i
.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
End Sub


Saludos,
KL
Respuesta Responder a este mensaje
#2 Ivan
26/06/2007 - 02:25 | Informe spam
hola Jose

a mi esto parece funcionarme (creo que aunque sean objetos OLE, no dejan de ser Shapes cuando se incrustan en hoja <no
me hagas demasiado caso, pero eso creo recordar de alguna ayuda recibida al respecto>)

en cuaalquier caso, funciona

Sub contr()
Dim s As Shape, f As Integer
With Hoja1
.[a1:c1] = Array("Nombre", "Top", "Left")
f = 2
For Each s In .Shapes
.Cells(f, 1) = s.Name
.Cells(f, 2) = s.Top
.Cells(f, 3) = s.Left
f = f + 1
Next
End With
End Sub

espero te sirva

un saludo
Ivan
Respuesta Responder a este mensaje
#3 José A. Castrejón
26/06/2007 - 17:57 | Informe spam
Muchisimas gracias a los dos, las 2 rutinas funcionaron muy bien.

Saludos

José Antonio Castrejón

"José A. Castrejón" wrote:

Hola buenas tardes, estoy haciendo una hoja de excel que tiene (sobre la
hoja, no dentro de un formulario) muchos controles (Labels, textbox y
combobox), los hice con la barra de herramientas "Cuadro de controles" y
entiendo que estos son objetos OLE...

quiero poner en una hoja ("Hoja1") los nombres y las propiedades Left,Top y
Width de todos los controles que estan en esa hoja.


Pense en hacer algo asi como :

dim C as control
For each c in me.controls
next

tambien probe con :
Dim N As Integer, Fila

With Worksheets("INICIO")
FILA = 1
For N = 1 To .OLEObjects.Count
Sheets("HOJA1").Cells(FILA, 1) = .OLEObjects.Name
Sheets("HOJA1").Cells(FILA, 2) = .OLEObjects.top

FILA = FILA + 1
Next N

End With

pero mis pruebas no han dado resultado y la verdad tampoco se mucho mas de
esto.
¿Es posible?

Saludos
José Antonio Castrejón
Respuesta Responder a este mensaje
#4 Ivan
26/06/2007 - 21:31 | Informe spam
On 26 jun, 17:57, José A. Castrejón
wrote:
Muchisimas gracias a los dos, las 2 rutinas funcionaron muy bien.

Saludos

José Antonio Castrejón



"José A. Castrejón" wrote:
> Hola buenas tardes, estoy haciendo una hoja de excel que tiene (sobre la
> hoja, no dentro de un formulario) muchos controles (Labels, textbox y
> combobox), los hice con la barra de herramientas "Cuadro de controles" y
> entiendo que estos son objetos OLE...

> quiero poner en una hoja ("Hoja1") los nombres y las propiedades Left,Top y
> Width de todos los controles que estan en esa hoja.

> Pense en hacer algo asi como :

> dim C as control
> For each c in me.controls
> next

> tambien probe con :
> Dim N As Integer, Fila

> With Worksheets("INICIO")
> FILA = 1
> For N = 1 To .OLEObjects.Count
> Sheets("HOJA1").Cells(FILA, 1) = .OLEObjects.Name
> Sheets("HOJA1").Cells(FILA, 2) = .OLEObjects.top

> FILA = FILA + 1
> Next N

> End With

> pero mis pruebas no han dado resultado y la verdad tampoco se mucho mas de
> esto.
> ¿Es posible?

> Saludos
> José Antonio Castrejón- Ocultar texto de la cita -

- Mostrar texto de la cita -



hola Jose,

me alegro te hayan servido, pero te recomiendo ( aunque seguramente no
sea necesario) utilices el de KL

1º por venir de quien viene y 2º porque (si no me equivoco) con Shapes
te arriesgas a incluir en tu lista otros muchos objetos que pudieras
tener incrustados en la hoja

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