PDA

Ver la Versión Completa : Dropdown list excel delphi


DarkBlue
02-06-2012, 19:42:19
Ahora estoy con la idea de poner dropdown list en excel pero a la hora de seleccionar sus valores me sale un error , lo que pasa es que no puedo acceder al dropdown list :S he visto los macros en excel y pone las siguentes propiedades


ActiveSheet.Shapes("Drop Down 2").Select
With Selection
.ListFillRange = "$B$4:$B$6"
.LinkedCell = "$C$4"
.DropDownLines = 8
.Display3DShading = False
End With

a lo que yo creo que debe de ser algo asi en delphi





procedure TForm5.Button2Click(Sender: TObject);
var sheets,wb,xlapplication,ws:variant;
listaencontrados:tstringlist;
x,y:integer;
z:extended;
begin
XLApplication:= CreateOleObject('Excel.Application');
XLApplication.WorkBooks.Open(FileName :='C:\'+'avalanch-vp1277-665-08'+'.xlsx', Password :='57-+@%*+090', ReadOnly := TRUE);
XLApplication.visible:=true;
XLApplication.ActiveSheet.Unprotect('@%(05790¡$-');

WB := XLApplication.ActiveWorkbook;
sheets:=XLApplication.workbooks[1].Worksheets['hoja1'];
sheets := XLApplication.Activesheet;
y:=100;

XLApplication.Range['a15','a15'].Value:='jk';
XLApplication.Range['a16','a16'].Value:='jkff';
XLApplication.Range['a17','a17'].Value:='jjhuk';




for x:=0 to 10 do
begin


sheets.DropDowns.Add(483, 221.25+(x*15), 93, 15.75).Select;
seleccion:= sheets.DropDowns.Add(483, 221.25+(x*15), 93, 15.75).Select;//ningun problema
seleccion.ListFillRange['"$B$4:$B$6"'].select;//esto da error
seleccion.ListFillRange.LinkedCell:= '"$C$4"';

end;
XLApplication.Activesheet.Shapes('Drop Down 1').Select;//esto me da error :(




Gracias por su tiempo prometo estar pendiente de las publicaciones buen dia amigos!

Casimiro Notevi
02-06-2012, 19:49:55
Ahora estoy con la idea de poner dropdown list en excel pero a la hora de seleccionar sus valores me sale un error , lo que pasa es que no puedo acceder al dropdown list :S he visto los macros en excel y pone las siguentes propiedades

Hola, pero ¿qué problema tienes y cual es el error? :confused:

DarkBlue
02-06-2012, 20:10:26
pues simplmente me dice que no soporta ese metodo para ese objeto variant osea que le estoy diciendo mal como acceder a la propiedad o no estoy adivinando el metodo correcto mientras que el macro en excel me dice esto

with selection
.ListFillRange = "$B$4:$B$6"
.LinkedCell = "$C$4"
.DropDownLines = 8
.Display3DShading = False
end

yo trato de imitar eso en el ciclo es mas, ni siquiera me deja selecionar el dropdownlist con la siguinete linea

XLApplication.Activesheet.Shapes('Drop Down 1').Select me dice que no esta soportado tal metodo para el objeto olevariant

espero puedan ayudarme

DarkBlue
05-06-2012, 18:41:02
bueno para todos los perdidos que lleguen a este "hilo" les voy a decir como lo solucione bueno ahi va de nuevo todo el codigo


procedure TForm5.Button2Click(Sender: TObject);
var sheets,wb,xlapplication,ws,seleccion,uno:variant;

x:integer;
z:extended;
begin
XLApplication:= CreateOleObject('Excel.Application');
XLApplication.WorkBooks.Open(FileName :='C:\'+'avalanch-vp1277-665-08'+'.xlsx', Password :='57-+@%*+090', ReadOnly := TRUE);
XLApplication.visible:=true;
XLApplication.ActiveSheet.Unprotect('@%(05790¡$-');

WB := XLApplication.ActiveWorkbook;
sheets:=XLApplication.workbooks[1].Worksheets['hoja1'];


y:=100;
uno:=1;
XLApplication.Range['a15','a15'].Value:='jk';
XLApplication.Range['a16','a16'].Value:='jkff';
XLApplication.Range['a17','a17'].Value:='jjhuk';

for x:=0 to 10 do
begin
sheets.DropDowns.Add(483, 221.25+(x*15), 93, 15.75).Select;
sheets.DropDowns.Add(483, 221.25+(x*15), 93, 15.75).Select;
sheets.DropDowns.Add(422.25, 219.75+(x*15), 60.75, 15.75).Select;

end;
seleccion:=sheets.DropDowns('Drop Down 2'); {seleccion es una variable de tipo de dato variant entonces supuse que
devolvia una referencia al objeto dropdown que queria como estuve jugando con las propiedades de un objeto
clase tExcelworksheet y mas o menos asi eran algunos metodos }
seleccion.listfillrange:= '$B$4:$B$6';{ya que tenia la referencia me fije en el macro de excel las propiedades que usaba con el dropdown list
hablaba de esta manera el codigo del macro
ActiveSheet.Shapes("Drop Down 3").Select
With Selection
.ListFillRange = "$A$15:$A$17"
.LinkedCell = ""
.DropDownLines = 8
.Display3DShading = False }




mucha suerte espero que les sirva de algo y les ahorre tiempo