Deutsch
Forum

Wenn kein Excel, dann Excel&=ocxCreate("Excel.Application") (=0)?

 

Christof
Neuß
Hallo,
eigentlich eine einfache Frage. Aber ich kann's hier nicht nachstellen, da ich auf allen Rechnern Excel installiert habe.

Wenn ich eine Excel-Application "createn" will und es ist kein Excel auf dem Rechner, ist dann Excel&=0 ?

Kann ich anders testen, ob Excel vorhanden/erreichbar ist?

Merci, viele Grüße und ein schönes Wochenende...
 
Win10 16 GB RAM
13.05.2011  
 



Da ich kein Excel installiert habe wäre es nun für mich ein Leichtes das zu testen -

leider bietest Du aber keine Exe an sodass ich jetzt nicht genau weiß was ich erst anstellen soll. ^^
 
13.05.2011  
 




Uwe
''Pascal''
Niemeier
Hi Leute!

Das ging wohl an meine Adresse...


Wenn ich eine Excel-Application "createn" will und es ist kein Excel auf dem Rechner, ist dann Excel&=0 ?

Definitiv nein!
Wenn eine ungültige ID angegeben wird, entsteht immer ein WebBrowser-Fenster: Damit verbunden ist dann eine Meldung über einen Verbindungs- oder Navigationsfehler.

Eine Möglichkeit, um zu klären, ob die gewünschte Anwendung vorhanden ist:
KompilierenMarkierenSeparieren
window 600,600
declare a#:dim a#,255
declare b#:dim b#,16
declare Error&
stringw a#,0 ="Irgendeine.Application"
Error&=external("ole32","CLSIDFromProgID",a#,b#)
print Error&,winerror$(Error&)
stringw a#,0 ="Excel.Application"
Error&=external("ole32","CLSIDFromProgID",a#,b#)
print Error&,winerror$(Error&)
stringw a#,0 ="InternetExplorer.Application"
Error&=external("ole32","CLSIDFromProgID",a#,b#)
print Error&,winerror$(Error&)
waitkey

Die Beschreibung dieser API bei MSDN ist etwas verwirrend: angeblich wird bei Nichtvorhandensein der App eine CLSID angelegt und in die Registry geschrieben. Das kann ich aber nicht bestätigen!

Eine andere Möglichkeit: Die Proc ocxName  aus der ocxInfo.inc . Damit läßt sich nach ocxCreate() erfrage, was man da angelegt hat. Wenn's ein Browserfenster ist, könnte man darin dann gleich einen entsprechenden Hinweis für den Anwender erscheinen lassen.

HTH
Pascal
 
13.05.2011  
 




Christof
Neuß
Hallo Pascal,

das sieht gut aus

Nur noch eine Frage:
Ich teste das am Anfang meines Programms. Wenn %Error<>0 kommt eine Fehlermeldung und Programm wird beendet. Ansonsten geht's halt weiter...
An verschiedenen Stellen wird dann Excel geöffnet und auch wieder geschlossen. Dazu nutze ich ocxCreate(...
Wie kann ich denn die Application wieder beenden, die ich mit Deiner Vorgehensweise geöffnet habe. Sonst stört die nachher und bleibt eben auch nach Ende des Programms offen.

Danke
 
Win10 16 GB RAM
13.05.2011  
 




Christof
Neuß
Ich glaube, ich hab's hinbekommen. Über die oxcInfo3a.inc. Allerdings hat mir XPSE ein Fehler gemeldet. Die Funktion "WideToMulti..." wäre nicht deklariert. Habe diese dann aus der ocx2.inc in die ocx3a.inc kopiert. Dann ging's. Bei
ExcelTEST&=oxcCreate("Excel.Applikation")
zeigt mir
oxcName(ExcelTEST&)
jetzt "_Application" an.

Ob das richtig ist??? Mir ist eingefallen, dass ich Excel von meinem Netbook verbannt habe. Also dort getestet.
Da kommt "IEWebBrowser2".
Die Abfrage kann also m.E. auf

Instr("_APPLICATION",Upper$(osxName(ExcelTEST&)))=0 lauten.
 
Win10 16 GB RAM
13.05.2011  
 




Uwe
''Pascal''
Niemeier
Hi Christof!


Wie kann ich denn die Application wieder beenden, die ich mit Deiner Vorgehensweise geöffnet habe.


Am elegantesten mit ocxMethod(Excel&,"Quit")

_Application  als Name eines Anwendungs-Objektes scheint zu stimmen. Oder eben auf IWebBrowser2  testen.

SeeYou
Pascal
 
14.05.2011  
 




Christof
Neuß
Hi Pascal,

das funktioniert

Ich mache das jetzt so:
KompilierenMarkierenSeparieren
ocxInit()
VAR ExcelTEST&=ocxCreate("Excel.Application")

ifNOT InStr("BROWSER",Upper$(ocxName(ExcelTEST&)) )=0

    ocxMethod(ExcelTEST&,"Close")
    MessageBox("Excel ist nicht installiert oder kann nicht gestaret werden!"+Chr$(10)+"Programm wird beendet.","Meldung",0)
    ocxRelease(ExcelTEST&)
    ocxDeInit()
    END

else

    ocxMethod(ExcelTEST&,"Quit")

endif

ocxRelease(ExcelTEST&)
ocxDeInit()

Der Browser schließt sich dann aber nicht mit "Quit". Mit "Close" geht's auch nicht. Oder muss ich den gar nicht schließen?

Merci.
 
Win10 16 GB RAM
16.05.2011  
 




Uwe
''Pascal''
Niemeier
Hi Christof!

Da mußte ich selbst erstmal nachgucken

Kurzer Blick in den Taskmanager zeigt, das ein Webbrowser fest ans aufrufende Profan-Programm gekoppelt ist und sich damit auch beendet, wogegen eine Applikation selbständig (und möglicherweise im Hintergrund) weiterlaufen würde.

PS: Das trifft auch zu, wenn man dem zu erzeugenden Objekt ein Control zuweisen würde; eine Applikation hätte trotzdem ein eigenes Fenster, nur der WebBrowser würde im Hauptfenster sichtbar:
KompilierenMarkierenSeparieren
usermessages 16'--nur kontrolliert beenden per ENTER in %hwnd
ocxInit()
declare Control&
var ExcelTEST&=ocxCreate("Excelx.Application",%hwnd,10,10,300,300,$50000000,addr(Control&))

if InStr("BROWSER",Upper$(ocxName(ExcelTEST&)))

    ocxMethod(ExcelTEST&,"Navigate","C:\Hinweis.html")
    waitkey

else

    ocxPut(ExcelTEST&,"Visible",1)
    waitkey
    ocxMethod(ExcelTEST&,"Quit")

endif

ocxRelease(ExcelTEST&)
destroywindow(Control&)
ocxDeInit()

HTH
Pascal
 
17.05.2011  
 




Christof
Neuß
Hi Pascal,

DANKE!!!
 
Win10 16 GB RAM
17.05.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.914 Betrachtungen

Unbenanntvor 0 min.
Ingo20.01.2020
H.Brill30.05.2019
kustg14.05.2019
Uwe Lang22.07.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie