AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel öffnen - EOleSysError

Offene Frage von "Bernhard Geyer"
Ein Thema von API · begonnen am 3. Apr 2012 · letzter Beitrag vom 4. Apr 2012
Antwort Antwort
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

Excel öffnen - EOleSysError

  Alt 3. Apr 2012, 09:41
Hallo

Ich öffne Excel mit Late Binding wie folgt:

Delphi-Quellcode:
  try
    XlsApp := GetActiveOleObject('Excel.Application');
  except
    XlsApp := CreateOleObject('Excel.Application');
  end;
Das Problem ist, dass eine Fehlermeldung erscheint, wenn schon eine Arbeitsmappe geöffnet ist und sich der User zugleich in einem Arbeitsblatt im Editiermodus befindet (nach Doppeklick auf Zelle).

Wie kann ich das umgehen?

Zitat:
exception class : EOleSysError
exception message : Aufruf wurde durch Aufgerufenen abgelehnt.

main thread ($c38):
004c1270 +014 MeineExe.exe ComObj OleError
004c1288 +010 MeineExe.exe ComObj OleCheck
004c1d5c +0cc MeineExe.exe ComObj GetIDsOfNames
004c1df9 +071 MeineExe.exe ComObj VarDispInvoke
0045e62a +096 MeineExe.exe Variants _DispInvoke
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Excel öffnen - EOleSysError

  Alt 3. Apr 2012, 09:43
Du meinst

    XlsApp := GetActiveOleObject('Excel.Application'); und du landest dann im
    XlsApp := CreateOleObject('Excel.Application'); Zweig, oder?

Was solls? Diese Exception sieht du doch nur Während des Debuggens. Und wieso willst du überhaupt die laufende instanz abgreifen wenn dir auch ein neue Instanz genügt?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#3

AW: Excel öffnen - EOleSysError

  Alt 3. Apr 2012, 10:00
Habe nun herausgefunden, dass die Stelle, wo der Fehler auftritt, nach dem GetActiveOleObject ist, sobald auf das XLApp zugegriffen wird.

Ursache: Während man sich im Bearbeitungsmodus befindet, ist Excel für den programmatischen Zugriff gesperrt.

Und wieso willst du überhaupt die laufende instanz abgreifen wenn dir auch ein neue Instanz genügt?

Delphi-Quellcode:
 try
    XLApp := GetActiveOleObject('Excel.Application');
  except
    XLApp := CreateOleObject('Excel.Application');
    XLApp.Visible := True;
  end;

  XLApp.Workbooks.Open(sXlsFile); <--- Fehler hier:

Zitat:
Und wieso willst du überhaupt die laufende instanz abgreifen wenn dir auch ein neue Instanz genügt?
Ich möchte damit verhindern, dass immer eine neue Instanz geöffnet wird (neue Excel.exe im TM)

Habe schon einen anderen Lösungsansatz, werde mich später nochmals melden.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Excel öffnen - EOleSysError

  Alt 3. Apr 2012, 10:05
Zitat:
Und wieso willst du überhaupt die laufende instanz abgreifen wenn dir auch ein neue Instanz genügt?
Ich möchte damit verhindern, dass immer eine neue Instanz geöffnet wird (neue Excel.exe im TM)
Und? Diese Instanz wird wieder geschlossen wenn du nicht mehr darauf zugreifst (und Excel auch korrekt in Windows registriert ist).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#5

AW: Excel öffnen - EOleSysError

  Alt 3. Apr 2012, 10:41
Die Arbeitsmappe möchte ich wirklich in der gleichen Instanz geöffnet haben,
denn es soll möglich sein, zwischen den Arbeitsmappen mit Strg+Tab zu wechseln, Formeln zwischen Arbeitsmappen kopieren zu können, Speicher zu reduzieren, VBA Makros aller geöffneten Arbeitsmappen im VBA Editor einsehen zu können usw...
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#6

AW: Excel öffnen - EOleSysError

  Alt 4. Apr 2012, 00:52
Meine Lösung, damit nicht immer eine neue Instanz geöffnet wird (irgendwie klar)

anstatt so
ShellExecute(0, 'open', 'excel.exe', PChar(sXlsFile), nil, SW_SHOW); so:
ShellExecute(0, 'open', PChar(sXlsFile), nil, nil, SW_SHOW);
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Excel öffnen - EOleSysError

  Alt 4. Apr 2012, 07:16
Meine Lösung, damit nicht immer eine neue Instanz geöffnet wird (irgendwie klar)

anstatt so
ShellExecute(0, 'open', 'excel.exe', PChar(sXlsFile), nil, SW_SHOW); so:
ShellExecute(0, 'open', PChar(sXlsFile), nil, nil, SW_SHOW);
Und wie willst du jetzt damit automatisiert arbeiten? Das willst du doch sonst würdest du nicht mit OLE versuchen Excel zu starten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz