Visual Basic.NET - Crear listas desplegables en Excel desde código

   
Vista:
Imágen de perfil de Jorge

Crear listas desplegables en Excel desde código

Publicado por Jorge (6 intervenciones) el 26/03/2014 15:39:05
Hola soy nuevo en el foro, por lo que si cometo algún fallo o no es aquí donde debo indicar mi problema, les agradecería me ayudaran.

Mi problema es el siguiente.

Desde mi programa quiero generar un Excel, que tenga diversas columnas con datos y que se envíe por correo electrónico a una persona que modificará dichos datos y volverá a reenviarme el fichero para su procesamiento.

Mi problema radica a la hora de que los datos que se reciban correspondan a los datos que se encuentran en mi base de datos.

Una de las columnas contiene la provincia de una dirección y quisiera que las provincias posibles aparecieran en el Excel como una lista desplegable para que se pueda seleccionar una y no se tenga que escribir el nombre. Así cuando el excel regrese y tenga que importarlo, no será necesario validar los nombres de provincias pues todos se ajustarán a los dados en la lista.

No se como hacer para incluir una lista en el excel desde programación.

Mi código actualmente es este:

Dim AppExcel As Object
AppExcel = CreateObject("Excel.Application")


With AppExcel

.Workbooks.Add()

'PONGO LAS CABECERAS
.RANGE("A1").VALUE = "NIF"
.RANGE("B1").VALUE = "NOMBRE"
.RANGE("C1").VALUE = "APELLIDOS"
.RANGE("D1").VALUE = "EMAIL"
.RANGE("E1").VALUE = "MOVIL"
.RANGE("F1").VALUE = "DIRECCION"
.RANGE("G1").VALUE = "POBLACION"
.RANGE("H1").VALUE = "CP"
.RANGE("I1").VALUE = "PROVINCIA"
.RANGE("J1").VALUE = "NEMOTECNICO"
.RANGE("K1").VALUE = "FECHA INICIO"
.RANGE("A1:K1").Interior.Color = RGB(150, 200, 135)


.Range("A1:K1").LOCKED = True 'BLOQUEO CABECERAS
.RANGE("A1:k1").EntireColumn.ColumnWidth = 20

.Range("L1:Z500").LOCKED = True 'BLOQUEO RESTO COLUMNAS
.Range("A2:K500").LOCKED = False 'DESBLOQUEAMOS COLUMNAS DATOS
.Range("A2:K500").INTERIOR.COLOR = RGB(180, 230, 240)

Dim Sheet As Object

Sheet = .Worksheets(1)

Sheet.NAME = "ALUMNOS" 'pone nombre a la hoja primera

Sheet = .Worksheets(2) 'asignamos la segunda hoja a la variable

Sheet.NAME = "USO EXCEL" 'cambiamos el nombre de la segunda hoja

Sheet.RANGE("B2").VALUE = "El dato NIF se indicará sin puntuación y sin letra si es un NIF normal. Ej: 20.456.234J será 20456234"
Sheet.RANGE("B3").VALUE = "En caso de ser un NIE se indicará todo seguido. Ej: M2345467U"

Sheet.range("B5").VALUE = "NIF, NOMBRE, APELLIDOS, EMAIL, NEMOTECNICO, FECHA INICIO son datos obligatorios, si no se indican el curso no podrá efectuarse."
Sheet.range("B6").value = "El resto de datos no lo són, pero son interesantes a la hora de comunicar con el alumno si existe algún problema, por lo que deberían ser indicados."

.ActiveSheet.Protect(Password:="JOR123loKLAUS") 'ESTABLECEMOS PROTECCIÓN CON CONTRASEÑA

.Visible = True

End With

El código funciona perfectamente y me crea una hoja excell con las columnas que quiero y son los unicas celdas que se pueden modificar.

Agradezco su atención. Muchas gracias.
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