Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Seleccionar impresora en Excel (https://www.clubdelphi.com/foros/showthread.php?t=12817)

RyAr 27-07-2004 15:53:29

Seleccionar impresora en Excel
 
Buenas, estoy pasando dantos desde delphi a excel, mediante ole con el siguiente codigo (Es un codigo de prueba):

Código Delphi [-]
uses
...ComObj, OleServer;

procedure TForm1.Button1Click(Sender: TObject);
var
  ExcelApp: OLEVariant;
  fichero: string;
begin
  ExcelApp := CreateOleObject('Excel.Application');
  try
    fichero:=ExtractFilePath(ParamStr(0))+'Plantilla.xls';
    ExcelApp.Workbooks.Open(fichero);
    ExcelApp.cells.item[7,'I']:=strtoint(Edit1.Text);
    ExcelApp.cells.item[8,'I']:=20;
    ExcelApp.Worksheets[1].PrintOut;
  finally
    if not VarIsEmpty(ExcelApp) then
    begin
    ExcelApp.Quit;
    ExcelApp := Unassigned;
    end;
  end;
end;

Me pasa los datos, me recalcula las celdas, me lo imprime y me lo cierra correctamente, pero.. me sale la ventana de "Desear guardar los cambios realizados en Plantilla.xls" del Excel, dandome als opciones de si, no y cancelar. Como hago para que acepte automaticamente la de "No", puesto que mi documento de excel es una plantilla para imprimir, y no quiero que se guarden nunca los datos.

Saludos, y muchas gracias

RyAr 28-07-2004 00:08:02

Buenas, otra duda que em ha surgido es como puedo seleccionar la impresora por la que imprima, ya que así imprime en la que esta configurada por defecto, así que si alguien em puede decir si hay alguna opcion para seleccionar la impresora antes de la linea ExcelApp.Worksheets[1].PrintOut;

Saludos

RyAr 28-07-2004 09:38:01

Buenas, gracias por tu explicacion, pero lo que me preguntaba era si se podia mostrar el dialogo de seleccionar impresora, puesto que el usuario puede elegir cada vez una.

Saludos, y mcuhas gracias por tus respuestas :-)

Neftali [Germán.Estévez] 28-07-2004 12:31:01

Puedes probar ésto:
Código Delphi [-]
var
  DlgPrint: OleVariant;
begin
  DlgPrint:= ExcelApp.Dialogs.Item[xlDialogPrint];
  DlgPrint.Show(,,,4);

RyAr 28-07-2004 12:55:55

Buenas, he metido lo que me has dicho y y un PrintDialog por si acaso, y em da error en al linea DlgPrint:= ExcelApp.Dialogs.Item[xlDialogPrint];

He cambiar algun nombre o meter algo mas?

Saludos

Neftali [Germán.Estévez] 28-07-2004 14:32:40

Cita:

Empezado por RyAr
em da error en al linea
Código Delphi [-]
DlgPrint:= ExcelApp.Dialogs.Item[xlDialogPrint];
He cambiar algun nombre o meter algo mas?

xlDialogPrinttiene pinta de ser un índice, así que prueba con valores 0, 1,...
Por lo demás no se me ocurre qué puede ser.

RyAr 28-07-2004 15:09:31

Buenas, como bien dices era un indice, y probando lso valores 0, 1, 2, y 3 con el 1 s eme ha abierto el cuadro de dialogo de abrir archivo de excel, y con lso otros me ha dado error, así que será cuestión de probar.

Saludos, y gracias

RyAr 28-07-2004 16:02:46

Bueno, al final he dado con el número, era el 8 paraq ue muestre el cuadro de dialogo de la impresora. Por si alguine quiere el codigo, sería el siguiente para pasar valores a excel e imprimirlos.

Código Delphi [-]
uses
...ComObj, OleServer;

procedure TForm1.Button2Click(Sender: TObject);
var
  ExcelApp: OLEVariant;
  fichero: string;
  DlgPrint: OleVariant;
begin
  ExcelApp := CreateOleObject('Excel.Application');
  try
    fichero:=ExtractFilePath(ParamStr(0))+'Plantilla.xls';
    ExcelApp.Workbooks.Open(fichero);
    ExcelApp.cells.item[5,'D']:=Edit1.Text;
    ExcelApp.cells.item[7,'I']:=12;
    ExcelApp.cells.item[8,'I']:=20;
    DlgPrint := ExcelApp.Dialogs.Item[8];
    DlgPrint.Show;
  finally
    if not VarIsEmpty(ExcelApp) then
    begin
    ExcelApp.DisplayAlerts := False;
    ExcelApp.Quit;
    ExcelApp := Unassigned;
    end;
  end;
end;

Gracias por haberme ayudado a sacar este codigo :)

Saludos

Neftali [Germán.Estévez] 28-07-2004 16:05:25

Cita:

Empezado por RyAr
Buenas, como bien dices era un indice, y probando lso valores 0, 1, 2, y 3 con el 1 s eme ha abierto el cuadro de dialogo de abrir archivo de excel, y con lso otros me ha dado error, así que será cuestión de probar.

Segun la doc. de microsoft:
xlDialogPrint = 8
xlDialogPrinterSetup = 9
xlDialogPrintPreview = 222

RyAr 28-07-2004 16:08:37

Gracias, parece que conseguimos los numeritos a la vez ;) Pero todo el mérito de esto es tuyo.

Muchas gracias, y saludos


La franja horaria es GMT +2. Ahora son las 13:08:21.

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