Einzelnen Beitrag anzeigen

hoef
(Gast)

n/a Beiträge
 
#5

Re: Excel offen und gesuchtes Workbook offen????

  Alt 14. Dez 2004, 20:49
hi, ich habs jetzt wie folgt gelöst:

function TFrorm1.IsProgActive(sClassName: String): Boolean;
var
ClassID: TCLSID;
Unknown: IUnknown;
begin
try
ClassID := ProgIDToClassID(sClassName);
Result := GetActiveObject(ClassID, nil, Unknown) = S_OK;
except
Result := False;
end;
end;

procedure TForm1.Butto1Click(Sender: TObject);
const
xlCellTypeLastCell = $0000000B;
var
WorkAkt,AppAkt:Boolean;
MessPfad: String;
begin

Messpfad:='C:/2004_09_28_Messdaten.xls';

try
AppAkt:=false;
WorkAkt:=true;
try
//Abfrage ob Excel aktiv, dann
if IsProgActive('Excel.Application') then begin

TExcelApplication.ConnectKind := ckNewInstance instead of ckRunningOrNew;
AppAkt:=true;
ExcelApplication1 := TExcelapplication.Create(nil);
ExcelApplication1.ConnectKind := ckRunningOrNew;
ExcelApplication1.Connect;
ExcelApplication1.Visible[GetUserDefaultLCID]:=true;
ExcelApplication1.UserControl:=True;

//Falls Excel aktiv, auch mein Workbook???
if Messpfad <> ExcelApplication1.ActiveWorkbook.Path[GetUserDefaultLCID]+'\'+ExcelApplication1.ActiveWorkbook.Name
then begin
ExcelApplication1.Workbooks.Open
(Pfad,False,False,EmptyParam,'',False,False,EmptyP aram,EmptyParam,false,false,EmptyParam,false,0);
WorkAkt:=false;
end;

ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveW orkBook);

end
else begin

//Wenn nicht offen, dann aktiviere Excel und standartweg einleiten
WorkAkt:=false;
ExcelApplication1 := TExcelapplication.Create(nil);
ExcelApplication1.ConnectKind := ckRunningOrNew;
ExcelApplication1.Connect;
ExcelApplication1.Visible[GetUserDefaultLCID]:=true;
ExcelApplication1.UserControl:=True;
ExcelApplication1.Workbooks.Open(Pfad,False,False, EmptyParam,'',False,False,EmptyParam,EmptyParam,fa lse,false,EmptyParam,false,0);

// Workbook verbinden
ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveW orkBook);
end;

// Woorksheet verbinden und aktivieren
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets.It em['Peltier'] as _Worksheet);
ExcelWorksheet1.Activate;

//Und jetzt Workbook und Worksheet auslesen...

Ich hoff ich kann damit etwas helfen.

Gruß

Daniel

P.S.: Falls noch jemand einen besseren Weg weiß, ich bin immer offen...
  Mit Zitat antworten Zitat