Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Dropdown list excel delphi (https://www.clubdelphi.com/foros/showthread.php?t=79010)

DarkBlue 02-06-2012 19:42:19

Dropdown list excel delphi
 
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


Código 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

Cita:

Empezado por DarkBlue (Mensaje 434152)
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
Código Delphi [-]

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


La franja horaria es GMT +2. Ahora son las 15:45:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi