PDA

Ver la Versión Completa : funcion ExcelApplication1.ActiveWorkbook.SaveAs


carlos gonzalez
22-08-2015, 05:49:52
Hola amigos buenas.

He estado buscando ya varios días en la web y no he encontrado el parámetro que se debe de cambiar a esta función, para que al guardar un archivo de Excel y si este ya existe no pregunte nada solo lo guarde.

ExcelApplication1.ActiveWorkbook.SaveAs(rutaArchivo,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
xlnoChange,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
LCID);


Alguien de ustedes conoce la sintaxis para lo que quiero hacer, si alguien sabe como hacerlo se los voy agradecer mucho.

Saludos...

Su amigo charless

ecfisa
22-08-2015, 08:48:17
Hola Carlos.

¿ Que versiónes de Delphi y Excell estas usando ?

Saludos :)

ecfisa
22-08-2015, 09:09:12
Hola de nuevo.

Aunque desconozco si trabajará para las versiones que manejas, creo que podrías intentarlo de este modo:

...
var
ExcelApp : OleVariant;
begin
ExcelApp := CreateOleObject('Excel.Application');
try
ExcelApp.DisplayAlerts := False;
try
// Acciones de guardado
// ...
finally
ExcelApp.DisplayAlerts := True;
end;
finally
ExcelApp.Quit;
ExcelApp := UnAssigned;
end;
end;


Saludos :)

nlsgarcia
22-08-2015, 10:39:37
carlos gonzalez,


...guardar un archivo de Excel y si este ya existe no pregunte nada solo lo guarde...

:rolleyes:

Te comento:

1- Ninguno de los parámetros de Workbook.SaveAs Method (Excel) (https://msdn.microsoft.com/en-us/library/office/ff841185.aspx) están relacionados con las alertas de Excel.

2- Para evitar las alertas de Excel, debes poner la propiedad DisplayAlerts de Excel en False.

Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ComObj, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
xlOpenXMLWorkbook = 51;

var
Excel, WrkS, WrkB : OLEVariant;
Row, Col : Integer;
Rows, Cols : Integer;
FileExcel : String;

begin

FileExcel := ExtractFilePath(ParamStr(0)) + 'TestData.xlsx';

try
Excel := GetActiveOleObject('Excel.Application');
except
Excel := CreateOleObject('Excel.Application');
end;

Excel.DisplayAlerts := False;
Excel.Visible := False;

WrkB := Excel.Workbooks.Open(FileExcel);
WrkS := WrkB.Worksheets[1];

Cols := WrkS.UsedRange.Columns.Count;
Rows := WrkS.UsedRange.Rows.Count;

Randomize;

for Row:= 1 to Cols do
for Col:= 1 to Rows do
WrkS.Cells[Col,Row] := Random(1000);

WrkS.SaveAs(FileExcel,xlOpenXMLWorkbook);

Excel.Quit;
Excel := Unassigned;
WrkS := Unassigned;
WrkB := Unassigned;

end;

end.

El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite por medio de automatización abrir, actualizar y salvar una hoja de Excel 2010 con valores aleatorios sin mostrar ninguna alerta ni visualizar la hoja durante el proceso.

Revisa esta información:

Hojas de Excel en Delphi (http://www.clubdelphi.com/foros/showthread.php?t=84810&highlight=CreateOleObject+nelson)

Espero sea útil :)

Nelson.