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.
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


0