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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.