Dateien-Kollision

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Dateien-Kollision

Beitrag von Jan »

Wenn mein Kunde eine Excel-Datei öffnet (Dateiauswahl über XbpFileDialog)

Code: Alles auswählen

// Das Excel-Objekt erstellen
oExcel := CreateObject("Excel.Application")
// Hat dass funktioniert?
IF Empty(oExcel)
   MsgBox("Excel ist nicht installiert", "Achtung")
   RETURN .F.
ENDIF

// Excel auf jeden Fall nicht anzeigen
oExcel:visible := .F.

// Rückmeldungen von Excel unterdrücken
oExcel:DisplayAlerts := .F.

// Die übergebene Datei öffnen
oBook := oExcel:workbooks:open(cDateiname)
oSheet := oBook:ActiveSheet
und dann manuell eine andere XLS öffnet, wird die per ActiveX geöffnete Datei ebenfalls mit aufgeführt. Wenn das das manuell geöffnete Excel geschlossen wird, wird die per ActiveX geöffnete Datei ebenfalls mit geschlossen. Ganz böse Falle.

Die beim Kunden installierte Excel-Version ist 2002. Bei mir ist 2010 installiert, da passiert das nicht.

Wie kann ich das beim Kunden verhindern? Der ist verständlicherweise nicht begeistert, das er während langwieriger Arbeiten mit meinem Programm nicht parallel mit Excel arbeiten kann.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Dateien-Kollision

Beitrag von AUGE_OHR »

Jan hat geschrieben:Die beim Kunden installierte Excel-Version ist 2002. Bei mir ist 2010 installiert, da passiert das nicht.
der Kunde möge auf die Win7 / 2010 wechseln weil IMHO die "alte" Version es nicht kann.
erst ab der 2007 (Ribbon) konnte man dann eine weiter Instanz aufrufen der auch im Xbase++ Thread läuft.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Dateien-Kollision

Beitrag von Jan »

LOL. Ich glaube, darüber wird der Kunde sich nicht freuen. Die arbeiten in der gesamten Firma mit Office 2002, größtenteils auf Windows XP. Und werden nicht nur wegen meinem kleinen Programm wechseln.

Aber Danke für die Bestätigung meines Verdachts. Genau das war auch meine Befürchtung gewesen. Und meine Hoffnung ist, das man das mit irgendeinem Schalter , Parameter, o. ä. einstellen kann.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Dateien-Kollision

Beitrag von georg »

Hallo, Jan -


da gibt es eine einfache Lösung: nicht mit Excel arbeiten, während parallel mit Office Automation (!) gearbeitet wird.

Das liegt daran, dass Office Automation (meist) im Hintergrund ausgeführt wird. Öffnet der Anwender jetzt eine Excel-Tabelle, wird geprüft, ob Excel ausgeführt wird. Ergebnis: ja, wird ausgeführt. Also wird das neue Sheet dem laufenden Excel "untergeschoben", wie wir es beim normalen Betrieb auch erwarten würden. Und damit sind die Probleme "programmiert".

Das ist so "by Design".

Meines Wissens hatte ich die gleichen Probleme auch bei Office 2010, so dass auch dies keine Option darstellt.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Dateien-Kollision

Beitrag von Rolf Ramacher »

Hi Jan,

muß der Kunde im dienem geöffenten Excel etwas ändern. ? Vielleicht hilft es ja , wenn du visible:=.t. stellst
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Dateien-Kollision

Beitrag von AUGE_OHR »

georg hat geschrieben:Öffnet der Anwender jetzt eine Excel-Tabelle, wird geprüft, ob Excel ausgeführt wird. Ergebnis: ja, wird ausgeführt.
das wäre noch eine Möglichkeit es aus Xbase++, per Thread, zu prüfen und dem Anwender "abzuweisen"
georg hat geschrieben:Meines Wissens hatte ich die gleichen Probleme auch bei Office 2010, so dass auch dies keine Option darstellt.
der grosse Unterschied ab der Office 2007 ist nicht die Ribbonbar sondern "warum" sie verwendet wird.
ein Menu gilt ja nur für ein Fenster also eine Instanz. ab Office 2007 kann man aber mehre Instanzen öffnen und alle arbeiten mit der selben Ribbonbar.
Rolf Ramacher hat geschrieben:visible:=.t.
ja ... mit einer "grossen" Meldung "bitte warten ..." ;)
gruss by OHR
Jimmy
Antworten