Excel - Excel+Activex+VB+VBA

   
Vista:

Excel+Activex+VB+VBA

Publicado por JuanC (792 intervenciones) el 26/05/2008 20:56:56
Por esas cosas de la vida me encontré programando un Control Activex en VB
y también por esas cosas... se me ocurrió que podría vincular el control con una
planilla de Excel... y usar ese control en VBA...
Aquí una aproximación burda, como para empezar...

El componente es un Combo (podría ser cualquiera)

Option Explicit
'//By JuanC - May. 2008
Private m_sSheet As String
Private m_sRange As String
Public Property Let SheetName(ByVal sName As String)
m_sSheet = sName
End Property
Public Property Let Range(ByVal sRng As String)
m_sRange = sRng
End Property
Public Sub GetValues()
Dim XL As Object
Dim Sheet As Object
Dim obj As Object, Rng As Object
On Error Resume Next
If Trim(m_sSheet) = "" Or Trim(m_sRange) = "" Then Exit Sub
Set XL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical, "Error"
Exit Sub
End If
Set Sheet = XL.worksheets(m_sSheet)
If Not Sheet Is Nothing Then
Set Rng = Sheet.Range(m_sRange)
If Not Rng Is Nothing Then
'//Llenar en componente con los valores del rango
Combo1.Clear
For Each obj In Rng
Combo1.AddItem obj.Value
Next
End If
End If
If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
Set Sheet = Nothing
Set XL = Nothing
Set obj = Nothing
End Sub

Private Sub UserControl_InitProperties()
m_sSheet = ""
m_sRange = ""
End Sub

Saludos desde Baires, JuanC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Excel+Activex+VB+VBA

Publicado por anonimo (70 intervenciones) el 26/05/2008 22:59:37
Perdon la falta de conocimiento, pero, podrias explicar un poquitin mejor como lo usamos amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Excel+Activex+VB+VBA

Publicado por JuanC (792 intervenciones) el 26/05/2008 23:19:14
No voy a entrar en detalles, es un tema algo avanzado y llevaría demasiado tiempo y texto explicarlo paso a paso...
Algunas consideraciones:
1- Crear el Control ActiveX en VB (el código es el que publiqué)
y compilarlo (se obtiene un archivo .ocx, ejemplo: CustomCombo.ocx)
2- En Excel (Editor de macros) crear un proyecto con un UserForm
3- Instalar el componente .ocx (Menú Herramientas>>Referencias...)
4- Agregar un componente al formulario y codificar... (asignarle las propiedades
SheetName, Range y usar el método GetValues para que el componente
cargue los valores del rango solicitado)

NOTA: el control lo instalé y lo probé en Office 2000

Eso es más o menos lo que hay que hacer...

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar