Aktuelle Zeit: 16.08.2018 09:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 20.05.2010 14:04 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
ey danke für den tipp kiffi.

wollte deine änderungen gerade in meine beispiele einbauen und die zeiten entsprechend anpassen. jetzt bin ich aber bei einem anderen problem. wie sieht das mit dem PrepareStatement aus, wenn der entsprechende befehl statt

*oRechnen\RechnenPlus (5, 4)
*oRechnen\RechnenPlus (cnt, 4)

lautet. ich werde dann alle beispiele auf cnt umbauen. es wird ja keiner eine million mal exakt das gleiche ausführen. sorry, hab mich vorher nicht so mit comate beschäftigt. COMate_PrepareStatement("RechnenPlus (" + Str(cnt) + ", 4)") funktioniert leider nicht.

kannst du mir auch noch sagen, wie in meinem beispiel 3, zeile 45 der richtige comate-befehl lautet? so wie ich es geschrieben habe funktioniert es zwar, ich glaube aber nicht, dass es so richtig ist.

thxs
josh


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 20.05.2010 15:00 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Josh hat geschrieben:
COMate_PrepareStatement("RechnenPlus (" + Str(cnt) + ", 4)") funktioniert leider nicht.

Du warst schon nahe dran:
Code:
*hStatement = COMate_PrepareStatement("RechnenPlus (" + Str(@cnt) + " As long BYREF, 4)")


Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 20.05.2010 16:13 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
so, hab das comatezeugs korrigiert. beispiele, zeiten und text geändert.

Josh hat geschrieben:
kannst du mir auch noch sagen, wie in meinem beispiel 3, zeile 45 der richtige comate-befehl lautet? so wie ich es geschrieben habe funktioniert es zwar, ich glaube aber nicht, dass es so richtig ist.

kiffi, kannst du den befehl bitte noch anschaun?

oExcelSheet\SetProperty ("Activate = 0") kann ja wohl nicht stimmen, aber
oExcelSheet\SetProperty ("Activate") funktioniert nicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 20.05.2010 17:24 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Josh hat geschrieben:
kiffi, kannst du den befehl bitte noch anschaun?

verzeitung! Hatte ich oben übersehen.
Code:
oExcelSheet\Invoke ("Activate")


Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 20.05.2010 17:30 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
Kiffi hat geschrieben:
Code:
oExcelSheet\Invoke ("Activate")

danke, habs korrigiert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 02.08.2012 10:07 
Offline
Benutzeravatar

Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Hallo Forum,

Ich versuche gerade diesen älteren Beitrag zum lauen zu bekommen.
Die Interfaces sind geladen mit OLE_COM_GEN,
aber immer bei
Code:
hr = CLSIDFromProgID_(@"EXCEL.APPLICATION", @ClsId)

gibts eine Fehlermeldung. (es kommt keine gültige CLSID heraus)

(Office 2010 Excel)
stimmt die Excel.application nicht? woher bekomme ich diese ID überhaupt?

Lg Max
(leider sind ein paar beispielcodes offline, z.B. die Include)

Ich verwende den code vom Anfang:
INCLUDE Datei
Code:
EnableExplicit

  IncludePath "Includes"
  IncludeFile "excel_interfaces.pb"

  Define ClsId.IID
  Define *oExcelApp   ._Application
  Define *oExcelSheets.IWorksheets
  Define *oExcelSheet ._Worksheet
  Define Item.variant
  Define *BStr
  Define Time.l
  Define cnt.l
  Define hr.l

  CoInitialize_ (0)

 ;Klassenid für Excel suchen und Objektverweis auf Application erstellen
  hr = CLSIDFromProgID_(@"EXCEL.APPLICATION", @ClsId)
  If hr : MessageRequester(Str(hr), "KlassenId konnte nicht ermittelt werden") : End : EndIf
  hr = GetActiveObject_(@ClsId, 0, @*oExcelApp)
  If hr : MessageRequester (Str(hr), "Excel muss geöffnet sein") : End : EndIf

 ;CoKlasse. Standardinterface auslesen
  *oExcelApp\QueryInterface (?IID__Application, @*oExcelApp)
  *oExcelApp\Release()

  Debug "------------------------------------------------------------"

 ;Den Titel von Excel anzeigen
  *oExcelApp\get_Caption (@*BStr)
  Debug "Alter Exceltitel: " + PeekS (*BStr)
  SysFreeString_ (*BStr)

 ;Den Titel von Excel ändern
  *oExcelApp\put_Caption ("*** Titel mit früher Bindung erstellt ***")
  Debug "Neuer Exceltitel wurde erstellt"

  Debug "------------------------------------------------------------"

 ;Zeiger auf die Tabellenblätter holen
  *oExcelApp\get_Worksheets (@*oExcelSheets)

 ;Anzahl der Tabellenblätter anzeigen
  *oExcelSheets\get_Count (@cnt)
  Debug "Anzahl der Tabellenblätter: " + Str(cnt)

  Debug "------------------------------------------------------------"

 ;Zeiger auf das 2. Tabellenblatt holen
  Item\vt = #VT_I4 : Item\lVal = 2
  *oExcelSheets\get_Item (Item);, @*oExcelSheet)

 ;CoKlasse. Standardinterface auslesen
  *oExcelSheet\QueryInterface (?IID__Worksheet, @*oExcelSheet)
  *oExcelSheet\Release()

 ;Den Namen des Tabellenblattes anzeigen
  *oExcelSheet\get_Name (@*BStr)
  Debug "Alter Tabellenblattname: " + PeekS (*BStr)
  SysFreeString_ (*BStr)

 ;Den Namen des Tabellenblattes ändern
  *oExcelSheet\put_Name ("Name frühe Bindung")
  Debug "Neuer Tabellenblattname wurde erstellt"

 ;Das zweite Tabellenblatt aktivieren
  *oExcelSheet\Activate()
  Debug "Zweites Tabellenblatt aktiviert"

  Debug "------------------------------------------------------------"

 ;Wert aus Zelle lesen und schreiben entfällt, Excel V10 ist nicht fähig dazu.
 ;Spätere Versionen nicht getestet.
  Debug "Zelle lesen/schreiben für frühe Bindung entfällt"

  Debug "------------------------------------------------------------"

 ;Tabellenblattname 10000x auslesen
  Time = ElapsedMilliseconds()
  For cnt = 1 To 10000
    *oExcelSheet\get_Name (@*BStr)
    SysFreeString_ (*BStr)
  Next
  MessageRequester ("Tabellenblattname 10.000x lesen", "Zeit EB: " + Str (ElapsedMilliseconds() - Time ) + "ms")

  Debug "------------------------------------------------------------"

 ;Objektverweise freigeben
  *oExcelApp\Release()    : *oExcelApp    = 0
  *oExcelSheets\Release() : *oExcelSheets = 0
  *oExcelSheet\Release()  : *oExcelSheet  = 0

  CoUninitialize_()

_________________
Max Aigner Projects


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: COM Objekte
BeitragVerfasst: 02.08.2012 11:54 
Offline
Benutzeravatar

Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Naja, damit gehts und wohl auch besser:

viewtopic.php?f=8&t=23254

Lg
Max

_________________
Max Aigner Projects


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye