ExcelFunktionen COMatePlus
- Falko
- Admin
- Beiträge: 3531
- 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.0 - Kontaktdaten:
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
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.
Alle Links nochmal auf meine neue Webseite angepasst. 18.05.2022
Gruß Falko
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
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.
Alle Links nochmal auf meine neue Webseite angepasst. 18.05.2022
Gruß Falko
Zuletzt geändert von Falko am 12.04.2009 21:59, insgesamt 11-mal geändert.
- Falko
- Admin
- Beiträge: 3531
- 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.0 - Kontaktdaten:
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
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
- Falko
- Admin
- Beiträge: 3531
- 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.0 - Kontaktdaten:
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
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
ExcelFunktionen COMate
@Falko
Versuche mich mal gerade darin, mit Hilfe der ExcelFunktionen eine bestehende Tabelle zu öffnen und auszulesen.
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
Versuche mich mal gerade darin, mit Hilfe der ExcelFunktionen eine bestehende Tabelle zu öffnen und auszulesen.
Code: Alles auswählen
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)
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
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
- Falko
- Admin
- Beiträge: 3531
- 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.0 - Kontaktdaten:
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
Gruß Falko
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
Gruß Falko
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?
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: Alles auswählen
;/ 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
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
- Falko
- Admin
- Beiträge: 3531
- 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.0 - Kontaktdaten:
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.
Gruß Falko
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: Alles auswählen
IncludePath #PB_Compiler_Home+"COMatePlus"
...
Gruß Falko