PureBoard
http://forums.purebasic.com/german/

ExcelFunktionen COMatePlus
http://forums.purebasic.com/german/viewtopic.php?f=8&t=23254
Seite 1 von 17

Autor:  Falko [ 05.04.2009 01:26 ]
Betreff des Beitrags:  ExcelFunktionen COMatePlus

@all

ExcelFunctions made COMatePLUS plus Testprogramm

Ich habe, soweit wie ich das mit COMate verwirklichen konnte, die
alten Disphelper-Excel-Funktionen auf COMate konvertiert.

Hierzu benötigt ihr die ComateLibrary von srod. COMatePlus 1.2 PB 4.50

Für PB5.40LTS wurde die COMatePlus-LIB von ts-soft nochmal angepasst, darum hier aktuelle Version COMatePlus 1.2 für PB5.40LTS

Ich habe nun auf einen Download auf meine HP umstellen müssen, da der Source durch einige Änderungen und Erweiterungen
zu lang für diesen Thread wurde und der Platz hier nicht mehr ausreicht.

Zusätzlich habe, ich soweit ich nichts übersehen habe, überall Debugs für die bisherigen Funktionen eingebaut um noch
vorhandene Fehler sehen zu können. Es sind also noch einige vorhanden :roll:


Nachfolgend sind PB-Codes angepasst auf PB 5.41LTS (pb, als auch pbi).

ExcelConstantsPLUS.pbi

ExcelFunktion.pbi

Test_Excel_Funktion.pb

Test_Paste_Image_Funktion.pb

Folgende ExcelConstants-Version ist eine ältere Version (älter PB 5.40LTS) und habe ich hier beigefügt.

ExcelConstants.pbi

Letzte, aktuelle Änderung 13.12.2015. Getestet mit PB 5.41LTS-Beta

Ich wünsche allen trotzdem viel Spaß damit.

Gruß Falko

Autor:  Falko [ 05.04.2009 18:12 ]
Betreff des Beitrags: 

Fehler Linien_An_Aus() , Nun LinienEinAus() behoben.

[Edit]
Weitere Funktionen an Comate angepasst:

InsertCell()
DeleteCell()

Jetzt muss ich nur noch sehen, wie ich :

RechtsMarkieren()

und

AddWorksheetAfter()

an Comate korrekt angepasst kriege :D

[/Edit]

Gruß, Falko

Autor:  Falko [ 07.04.2009 11:34 ]
Betreff des Beitrags: 

SetFont() ist nun um weitere Formatierungseinstellungen ergänzt

Der Text in der Zelle lässt sich nun auf Fett,horizontal zentriert, links und rechtsbündig, sowie
auf vertikal hoch, mittig und tief setzen.

Standardfonteinstellung ohne weitere Parameter
ist SetFont(ExcelObject)

Was ich bis jetzt in COMate noch nicht hinbekommen habe, sind die Funktionen:

AddWorksheetAfter() und RechtsMarkieren(), wobei ich letzteres
wohl rausnehmen werde.

Vielleicht habt ihr eine passende Lösung für mich, die ich einpflegen kann.


Mit freundlichen Grüßen,
Falko

Autor:  Falko [ 09.04.2009 11:33 ]
Betreff des Beitrags: 

Ich habe nun noch eine weitere Funktion: Procedure
SetRGBtoColorindex() hinzugefügt. Hiermit kann man nun seine eigenen Farben anstelle der 56 Grundfarben festlegen und überall, wo Colorindex benutzt wird, nutzen.

Eine interessante Seite zu den Grundfarben dazu findet ihr hier:
http://www.mvps.org/dmcritchie/excel/colors.htm


Gruß Falko

Autor:  Falko [ 12.04.2009 16:25 ]
Betreff des Beitrags: 

AddWorksheetAfter() wurde nun, dank Kiffis Unterstützung und Beispielsource nun neu eingefügt.
Hiermit ist es nun möglich, gleich beim Aufruf den Tabellennamen mit anzugeben.

Vielen Dank Kiffi.


Grüße, Falko

Autor:  Falko [ 12.04.2009 19:31 ]
Betreff des Beitrags: 

So, ich habe nun auch das MarkCellsRight(..) bereinigen können, und nun
läuft alles so wie beim Disphelper, nun auch mit Comate.

Grüße, Falko

Autor:  jear [ 04.11.2009 15:54 ]
Betreff des Beitrags:  ExcelFunktionen COMate

@Falko

Versuche mich mal gerade darin, mit Hilfe der ExcelFunktionen eine bestehende Tabelle zu öffnen und auszulesen.

Code:
XIncludeFile "ExcelFunktionen.pbi"

If FileSize("Test.xls") < 0 : End : EndIf

ExcelObject = OpenExcelFile("Test.xls")

If ExcelObject
 
  ExcelVisible(ExcelObject,#True)
 
  Zellen.s = "Zelleninhalte:" + #lf$
  For ix.i = 1 To 5
    Zellen + Str(ix) + ": " + ReadCellS(ExcelObject, ix, 1) + #lf$
  Next
 
  MessageRequester("Test Excel", Zellen , #MB_OK)
 
EndIf

CloseExcelAll(ExcelObject)


Die kleine Tabelle "Test.xls" existiert und enthält Angaben in den Zellen 1 - 5.

Trotzdem bleibt das Excel Fenster grau und es werden keine Zellinhalte ausgelesen.
Was mache ich da falsch?

Anschlussfragen:

Geht das Ganze auch mit COMatePlus von SROD?

Wie müsste der Befehl aussehen, eine bestehende Tabelle als csv-Datei zu speichern?

ActiveWorkbook.SaveAs FileName:="C:\Temp\xxxx.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

Autor:  Falko [ 05.11.2009 00:49 ]
Betreff des Beitrags:  Re: ExcelFunktionen PureDisphelper / COMate

Hallo @jear

Ich schaue mir das am Wochenende mal in Ruhe durch, da ich Spätschicht habe und leider nicht viel
Zeit entbehren kann. Wenn du die letzten Beiträge anschaust, wirst du sehen, das ich das schon komplett auf Comate umgestellt hatte. Aber das mit dem, was du beschrieben hattest, muss ich mir
am Wochenende ausarbeiten. Ich werde auf jedenfall darauf zurück kommen :allright:

Gruß Falko

Autor:  jear [ 11.11.2009 00:23 ]
Betreff des Beitrags:  Re: ExcelFunktionen PureDisphelper / COMate

Aus meinen Bemühungen ist der folgende Code rausgekommen.

Der speichert eine Excel-Tabelle aus einer Excel-Datei in eines der gängigen Formate.
Es stört nur noch der IMHO sinnlose Dialog mit Excel nach einem "Speichern als", wenn man die erzeugte Datei verlassen will.
Man kann zwar den Dialog unterdrücken (siehe Code) , zurück bleibt aber dann eine Excel-Leiche im Speicher. :(

Ich nutze Excel 2002. Ist das bei neueren Versionen immer noch so?

Code:
;/ jear * Nov 2009 * ExcelSheet SaveAs

IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"

;/ Excel FileFormat Constants
#xlNormal = -4143
#xlSYLK = 2
#xlCSV = 6
#xlCSVMac = 22
#xlCSVMSDOS = 24
#xlCSVWindows = 23
#xlText = -4158
#xlTextMac = 19
#xlTextMSDOS = 21

Procedure.s ExcelSheetSaveAs(Origin.s, Copy.s, FileFormat.l=#xlNormal, SheetNumber.l=1)
  Protected ApplObj.COMateObject, ExcelBook.COMateObject, ExcelSheet.COMateObject
  Protected result.s, args.s
  If FileSize(Copy) > 0 : DeleteFile(Copy) : Delay(50) : EndIf
  ApplObj = COMate_CreateObject("Excel.Application")
  If COMate_GetLastErrorCode() = #S_OK
    ApplObj\SetProperty("Visible = #False")
    ApplObj\SetProperty("DisplayAlerts = #False")
    ExcelBook = ApplObj\GetObjectProperty("Workbooks\Open('" + Origin + "')")
    If COMate_GetLastErrorCode() = #S_OK
      ExcelBook\Invoke("Activate()")
      ExcelSheet = ApplObj\GetObjectProperty("Sheets(" + Str(SheetNumber) + ")")
      If COMate_GetLastErrorCode() = #S_OK
        ExcelSheet\Invoke("Activate()")
        args = "SaveAs('" + Copy + "'," + Str(FileFormat) + ")"
        ExcelBook\Invoke(args)
        If COMate_GetLastErrorCode() = #S_OK
          ApplObj\SetProperty("DisplayAlerts = #True")
          ;/ Es erfolgt die von Excel bekannte überflüssige Abfrage beim "Speichern als"
         
          ;/ Wie verhindert man diese überflüssige Abfrage ???
          ;/ Der nachfolgende Befehl unterdrückt zwar die Abfrage, es bleibt aber der Excel-Prozess
          ;/ als Leiche zurück, da er offenbar auf die Antwort wartet!
          ;ExcelBook\SetProperty("Saved = #True")
         
          ;/ Wickelt man den Dialog aber ab (empfehle "Nein"), bendet Excel normal.
         
          MessageRequester("ExcelSheetSaveAs", "SavedAs " + Copy, #MB_OK|#MB_ICONWARNING)
        Else
          result = "ERROR: " + COMate_GetLastErrorDescription() + " (" + args + ")"
        EndIf
        ExcelSheet\Invoke("Close")
        ExcelSheet\Release()
      Else
        result = "ERROR: Sheet Nr. " + Str(SheetNumber) + " does not exist"
      EndIf
      ExcelBook\Release()
    Else
      result = "ERROR: Cannot open EXCEL book" + Origin
    EndIf
    ApplObj\Invoke("Quit()")
    ApplObj\Release() 
  Else
    result = "ERROR: Cannot open EXCEL application"
  EndIf 
  ProcedureReturn result
EndProcedure

;/Test

SetCurrentDirectory(GetPathPart(ProgramFilename()))
Define.s home = GetCurrentDirectory(), result

;result = ExcelSheetSaveAs(home + "Test.xls", home + "Test2.xls", #xlNormal, 1)
;result = ExcelSheetSaveAs(home + "Test.xls", home + "Test.slk", #xlSYLK, 1)
result = ExcelSheetSaveAs(home + "Test.xls", home + "Test.csv", #xlCSV, 1)

If result : MessageRequester("ExcelSheetSaveAs", result, #MB_OK|#MB_ICONWARNING) : EndIf

End

Autor:  Falko [ 11.11.2009 00:37 ]
Betreff des Beitrags:  Re: ExcelFunktionen PureDisphelper / COMate

Hi jear, dann bist du ja doch noch soweit gekommen.

ich erhalte bei diesem Source leider die folgende Fehlermeldung:

---------------------------
ExcelSheetSaveAs
---------------------------
ERROR: Cannot open EXCEL book F:\PureBasic4_31_X86\Falko\ExcelProgramm\ExcelFunktionslibrary\Test.xls
---------------------------
OK
---------------------------


Mit der Vorherigen, wurde zwar excel2007 geöffnet, aber ein Fehler in der Zusammensetzung vorhanden.
Diese hatte ich mir angeschaut, aber ich war selbst auch nicht weiter gekommen.

Damit ich das immer aus einem bestimmten Verzeichnis mit comateComPlus verwenden kann, habe ich bei mir
den includepath wie folgt so geschrieben und das comateCom auch dort eingefügt.

Code:
IncludePath #PB_Compiler_Home+"COMatePlus"
...



Gruß Falko

Seite 1 von 17 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/