ExcelFunktionen COMatePlus

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Can you test this?

Code: Alles auswählen

Procedure.l XLSFunc_GetSideNumbers(ExcelObject.COMateObject)
  Protected HPage.l,VPage.l
  HPage=ExcelObject\GetIntegerProperty("WorkSheets(1)\HPageBreaks\Count")+1:Debug COMate_GetLastErrorDescription() 
  VPage=ExcelObject\GetIntegerProperty("WorkSheets(1)\VPageBreaks\Count")+1:Debug COMate_GetLastErrorDescription() 
  ProcedureReturn HPage*VPage
EndProcedure

This ist from this VBA-Script:
http://www.vba-beispiele.de/office.php? ... t=vbaseite
Seitenanzahl = (Worksheets(1).HPageBreaks.Count + 1) * (Worksheets(1).VPageBreaks.Count + 1)
Regards,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Mesa
Beiträge: 16
Registriert: 03.05.2012 18:23

Re: ExcelFunktionen COMatePlus

Beitrag von Mesa »

Hello,

Sorry, it doesn't work even changing worksheet by ActiveSheet.

Do you think it is possible to use pure VBA code with comateplus ?

Mesa.
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Hello,

I am not sure. It could be a problem of Microsoft.
Here the following description to ActiveSheet.

http://support.microsoft.com/kb/210663/en

Unfortunately, Comate does not function directly with code VBA and has to go
for Purebasic are adapted. Whether everything functions in COMate,
can say srod in the English forum more about it.


[Edit="VBA"]
I have found there still something else in addition.
Only do not point I, how I with COMatePlus
can use.
Sub SeitenzahlDerAktivenTabelleErmitteln()
Dim i As Integer
i = ExecuteExcel4Macro("Get.Document(50)")
MsgBox "Anzahl der Seiten = " & i
End Sub
( http://cad-it-portal.ch/cad-school/TNT/ ... n_VBA.html ) Excuse me, it is into German
[/Edit]

[Edit2]
Ich schreibe jetzt mal kurz in deutsch für alle anderen weiter.
Dieser VBA-Code gibt wohl die Anzahl der druckbaren Seiten aus, die in einer Tabelle vorhanden sind.
Wenn ich jetzt nur den Code ausführe wird mir 1 angezeigt. Sobald ich mehrere Druckbereiche z.B. auf Tabelle1
erstelle, werden auch mehrere Seiten angezeigt. Nur wie ich dieses in PB mit COMate umsetzen muß, habe ich noch
nicht herausgefunden. Da der VBA-Code oben funktioniert, habe ich hier nur den Anfang der PB-Anpassung probiert.
Vielleicht weiß hier noch jemand, was ich da noch ändern muss. Ich bekomme einen Fehler: Type mismatch in the method parameters.
was wohl auf einen Fehler in den Parametern hinweist.

Code: Alles auswählen

Procedure.i XLSFunc_Get_SidesNumbers(ExcelObject.COMateObject)
  Protected ReturnValue.i
  ReturnValue=ExcelObject\GetIntegerProperty("ExecuteExcel4Macro('Get\Document(50)')"):Debug COMate_GetLastErrorDescription() 
  ProcedureReturn ReturnValue
EndProcedure
dieser Code ist also noch nicht ganz richtig. Invoke gibt nichts aus und SetProperty einen negativen 8stelligen Wert.
[/Edit2]
Falko.
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Mesa
Beiträge: 16
Registriert: 03.05.2012 18:23

Re: ExcelFunktionen COMatePlus

Beitrag von Mesa »

Hello,

Could you test this :

Code: Alles auswählen

ReturnValue=ExcelObject\GetIntegerProperty("ActiveSheet\PageSetup\Pages\Count")
It could work with Excel 2007 and more but it doesn't work with Excel 2003.

Mesa.
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Hello,

this don't work with Excel 2010.
Now i have made an entry in the english forum.

http://www.purebasic.fr/english/viewtop ... 13&t=50353

Maybe answers srod moreover and show a solution.

Regards,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Hier mal wieder was neues, wozu mir Kiffi seinen Code zur Verfügung gestellt hat.
Danke an Kiffi. :allright:

Die neue Funktion ist: XLSFunc_GetNumberOfPages(ExcelObject.COMateObject,Sheet.s)

Wenn man in einer Tabelle Druckbereiche definiert hat, werden diese damit korrekt gezählt.
Damit man nicht ins aktive Tabellenblatt umschalten muss, habe ich einen zusätzlichen Parameter "Sheet.s"
hinzugefügt. Damit ist es möglich gezielt jedes Tabellenblatt, mit seinem Namen anzusprechen und
die Anzahl der dortigen Druckbereiche auszugeben.

Ich hoffe, ihr könnt es gebrauchen.

Gruß,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Hilli
Beiträge: 17
Registriert: 07.10.2009 15:07

Re: ExcelFunktionen COMatePlus

Beitrag von Hilli »

Hallo Falko,
vielen Dank für die neue/geänderte LIB "Excel-Funtions.pbi".

Ob gewollt oder nicht, ist mir folgendes in der Procedure "RowCol2Range" aufgefallen :

[code]
EndIf
Debug Str(Rest) + " - " + Str(Rest+64) + " - " + Chr(Rest+64)
Ganz = (Col - Rest) / 26
[/code]

(Das ist das Debug welches ich erwähnt hatte)

Gruß Udo
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Hallo Udo,

achso, den hatte ich glatt übersehen und
nun entfernt. Danke für den Hinweis :allright:

Gruß,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Ich habe nun, falls ich nicht eine Funktion vergessen habe,
alle ins Beispielprogramm aufgenommen und hochgeladen:

XLSFunc_Elipse()
XLSFunc_Line()
XLSFunc_Rectangle()
XLSFunc_TextBox()
XLSFunc_RowCol2Range()
XLSFunc_Col2Range()

Folgende zwei Proceduren habe ich nicht
ins Beispiel eingebaut, weil dazu Grafiken benötigt
werden. Aber das sollte für euch kein Problem sein.

XLSFunc_Grafik()
XLSFunc_Image()

Um das Beispielprogramm Test_Excel_Funktion.pb
korrekt ausführen zu können, sollten die ExcelConstants.pbi
und ExcelFunktion.pbi zum einen im selben Verzeichnis
und der Ordner "COMatePlus" im PureBasic-Verzeichnis liegen.
Falls anders gewünscht, müssen die Includes in der ExcelFunktion.pbi
geändert werden.

Gruß,
Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
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 COMatePlus

Beitrag von Falko »

Kleine Änderung in folgende Procedure, wo nun ein ProcedureReturn
von mir eingefügt wurde um das Excelobject zurückzugeben.
Ohne dieses löste es beim ...Visible... bei mir einen Speicherfehler aus.
ich hoffe damit sind weitere Probleme in eure Codes behoben. :roll:

Code: Alles auswählen

Procedure XLSFunc_OpenExcelFile(Datei.s); Open ExcelFile
  Protected ExcelObject.COMateObject,Workbook
  ExcelObject = COMate_CreateObject("Excel.Application")
  If ExcelObject
      ExcelObject\Invoke("Workbooks\Open('"+Datei+"')")
  Else
    MessageRequester("Achtung","Bitte geben Sie eine vorhandene xls-Datei mit Pfad an!")
  EndIf
  ProcedureReturn ExcelObject
EndProcedure
Nun läuft mein Testprogramm komplett durch.
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten