[Erledigt] Frage zu Excel mit COMatePlus

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

[Erledigt] Frage zu Excel mit COMatePlus

Beitrag von Pure_Beginner »

Hallo Gemeinde,

wieder einmal ein Excel Problen.
Leider schaffe ich es nicht den Fehler abzufangen wenn die Exceldatei nicht gefunden wir.

Code: Alles auswählen

Define.COMateObject ExcelTwenty5, WorkBook
  ExcelTwenty5 = COMate_CreateObject("Excel.Application")
If ExcelTwenty5
  If ExcelTwenty5\GetObjectProperty("Workbooks\Open('"+str_Dateipfad+"')")                ;öffnen von vorhandener Tabelle Twenty 5.xlsx
    If  ExcelTwenty5\SetProperty("Visible = #True") = #S_OK
    EndIf
  EndIf
Else
  MessageRequester("Achtung","Bitte geben Sie eine vorhandene xlsx-Datei mit Pfad an!")
EndIf
Leider bekomme ich dann die COMate Fehlermeldung

Code: Alles auswählen

Procedure.i COMateClass_INTERNAL_InvokeiDispatch(*this._membersCOMateClass, invokeType, returnType, *ret.VARIANT, iDisp.iDispatch, subObjectIndex, *statement._COMatePLUSStatement)
  Protected result.i = #S_OK
  Protected dispID, dp.DISPPARAMS, dispIDNamed, excep.EXCEPINFO, uiArgErr
  ;First task is to retrieve the dispID corresponding to the method/property.
    result = iDisp\GetIDsOfNames(?IID_NULL, @*statement\methodName[subObjectIndex], 1, #LOCALE_USER_DEFAULT, @dispID)
  If SUCCEEDED(result)
    ;Now prepare to call the method/property.
      dispidNamed  = #DISPID_PROPERTYPUT
      If *statement\numArgs[subObjectIndex]
        dp\rgvarg = *statement\ptrVarArgs[subObjectIndex] + (#COMate_MAXNUMVARIANTARGS - *statement\numArgs[subObjectIndex])*SizeOf(VARIANT)
      EndIf
      dp\cargs = *statement\numArgs[subObjectIndex]
      If invokeType & (#DISPATCH_PROPERTYPUT | #DISPATCH_PROPERTYPUTREF)
        dp\cNamedArgs = 1
        dp\rgdispidNamedArgs = @dispidNamed
      EndIf
    ;Call the method/property.
      result = iDisp\Invoke(dispID, ?IID_NULL, #LOCALE_USER_DEFAULT, invokeType, dp, *ret, excep, @uiArgErr)
    If result = #DISP_E_EXCEPTION
      ;Has the automation server deferred from filling in the EXCEPINFO structure?
        If excep\pfnDeferredFillIn
          excep\pfnDeferredFillIn(excep)
        EndIf
        If excep\bstrSource
   ;       SysFreeString_(excep\bstrSource)
        EndIf          
        If excep\bstrDescription
          CompilerIf Defined(COMATE_NOERRORREPORTING, #PB_Constant)=0
            COMateClass_INTERNAL_SetError(*this, result,  #True, PeekS(excep\bstrDescription, -1, #PB_Unicode))
          CompilerEndIf
          SysFreeString_(excep\bstrDescription)
        Else
          CompilerIf Defined(COMATE_NOERRORREPORTING, #PB_Constant)=0
            COMateClass_INTERNAL_SetError(*this, result,  #True)
          CompilerEndIf
        EndIf          
        If excep\bstrHelpFile
          SysFreeString_(excep\bstrHelpFile)
        EndIf          
    EndIf
  EndIf
  ProcedureReturn result
EndProcedure
in der Zeile

Code: Alles auswählen

COMateClass_INTERNAL_SetError(*this, result,  #True, PeekS(excep\bstrDescription, -1, #PB_Unicode))
.

Ferner ist es mir nicht möglich zu verhindern das Excel im Hintergrung geöfnet bleibt ( mit Taskmannager sichbar).
Ich weis leider nicht wie ich die Variable Saved = True an Excel weiter reiche.

Dieses Projekt habe ich in Visual Basic längst realisiert, aber Purbasic biete so viele möglichkeiten, das ich gefallen daran gefunden habe und gerne mehr verstehen würde.

Für euere Hilfe wäre ich sehr dankbar.


PS.
giebt es ein kommerzielles Tool, das ich in Purbasic einbinden kann um es mit Excel zu verbinden (für Dummis) ?
Zuletzt geändert von Pure_Beginner am 13.03.2012 21:39, insgesamt 1-mal geändert.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Frage zu Excel mit COMatePlus

Beitrag von Kiffi »

Pure_Beginner hat geschrieben:Leider schaffe ich es nicht den Fehler abzufangen wenn die Exceldatei nicht gefunden wir.

Code: Alles auswählen

If FileSize(str_Dateipfad)=-1
  MessageRequester("Achtung","Bitte geben Sie eine vorhandene xlsx-Datei mit Pfad an!")
EndIf
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Frage zu Excel mit COMatePlus

Beitrag von Pure_Beginner »

@ Kiffi

Wie immer super schnell und einfach. (verstehe sogar ich)

Hab wieder wie immer viel gelernt.
Besten Dank. :allright:

Ps.
Weist du vieleicht auch wie ich die Excels im Taskmannager kille ?
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Frage zu Excel mit COMatePlus

Beitrag von Kiffi »

Pure_Beginner hat geschrieben:Weist du vieleicht auch wie ich die Excels im Taskmannager kille ?
brauchst Du nicht. Einfach in Deinem Code

Code: Alles auswählen

ExcelTwenty5\Invoke("Quit()")
ExcelTwenty5\Release()
ausführen, wenn Du das Objekt nicht mehr benötigst.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: Frage zu Excel mit COMatePlus

Beitrag von Pure_Beginner »

@Kiffi

Ok.
Nochmals Danke
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: Frage zu Excel mit COMatePlus

Beitrag von Falko »

Ich weiß nicht, ob du hier schon nachgeschaut hast.
Aber vielleicht kannst du dir hier auch einige
Sachen von herausziehen.

http://www.purebasic.fr/german/viewtopi ... =8&t=23254

Gruß,
Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten