Announcement

Collapse
No announcement yet.

Feststellen ob Excel schon geöffnet ist?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Feststellen ob Excel schon geöffnet ist?

    Hallo,

    wie kann ich feststellen ob Excel schon geöffnet ist?

    M.f.G. Andreas Käding

  • #2
    Kannst du.
    dass machst du am besten mit FindWindow('<fenstername>',nil)
    Den Fensternamen von Excel kannst du mit MS Spy++ o.ä. rausfinden. Leider hab ich Excel nicht installiert, sonst würd ich grad nachgucken.
    Irgentein Tool dafür is glaub ich auch bei delphi dabei, ich weiss aber grad net wie dat heisst.
    FindWindow liefert dir einen wert der kleiner oder gleich 0 ist wenn die anwendung(excel) nicht läuft

    Comment


    • #3
      also mit dem Fensternamen würde ich nicht operieren<br>
      Der ändert sich von Arbeitsmappe zu Arbeitsmappe.<br>
      Der folgende Code stammt von Deborah Pate und öffnet Excel nur wenn es nicht offen ist.<br>
      <PRE>
      uses Windows, ComObj, ActiveX, Excel_TLB;

      function Open_Excel_APP(v:boolean):Excel_TLB._Application;
      //Before you can use this method, you must have imported the type //library (Excel8.olb for Excel 97).

      var
      ExcelAPP: Excel_TLB._Application;
      AppWasRunning: boolean; // tells you if you can close Excel when You've finished
      Unknown: IUnknown;
      Result1: HResult;
      begin
      Mylcid := LOCALE_USER_DEFAULT;
      AppWasRunning := False;

      Result1 := GetActiveObject(CLASS_ExcelApplication, nil, Unknown);
      if (Result1 = MK_E_UNAVAILABLE) then
      ExcelAPP := CoExcelApplication.Create;

      else begin
      { make sure no other error occurred during GetActiveObject
      OleCheck(Result1);
      OleCheck(Unknown.QueryInterface(_Application, ExcelAPP));
      AppWasRunning := True;
      end;
      ExcelAPP.UserControl:=v;
      ExcelAPP.Visible[Mylcid] := v;
      result:=ExcelAPP;
      end

      Comment


      • #4
        Also, man kann schon mit <b>findwindow</b> arbeiten, zumal an erster Stelle ja der Klassenname steht. Und der dürfte sich auch bei mehreren Arbeitsmappen nicht ändern.<br><br>
        Aber eine Lösung über COM o.ä. ist in jedem Fall wohl eleganter.<br><br>
        Mathias

        Comment

        Working...
        X