COMate und Excel - einige Fragen

Anfängerfragen zum Programmieren mit PureBasic.
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

COMate und Excel - einige Fragen

Beitrag von ThoPie »

Hallo,
ich arbeite gerade an einem Projekt und erstelle Excel-Tabellen mit COMate. Jetzt habe ich dazu einige Fragen:
1) Wie kann ich beim Erstellen einer Excel-Tabelle gleich einen Dateinamen vorgeben?
2) Wie kann ich eine Datei im Querformat erzeugen und die Ränder setzen?
3) Wie kann ich eine Zelle umranden?
4) Gibt es irgendwo eine Übersicht mit erweiterten Funktionen (Zellen verbinden etc.)

Vielen Dank.
Bild
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Generell sollte du solche Sachen erstmal mit "Makro aufzeichnen" in Excel machen. Dann kann man die Codes recht einfach nach COMate transportieren. Alle deine Dinge kann man realisieren, leider fehlt mir jetzt aber die Zeit.

1. Einen Dateinamen kann man direkt nicht mitgeben. Das regelt man darüber, das man die Datei gleich zu beginn mit SaveAs speichert.

2.) Querformat:

Code: Alles auswählen

ActiveSheet\PageSetup\Orientation = 2 '2 für xlLandscape
Ränder setzen:

Code: Alles auswählen

ActiveSheet\PageSetup\LeftMargin = Application\InchesToPoints(1)
ActiveSheet\PageSetup\RightMargin = Application\InchesToPoints(1)
ActiveSheet\PageSetup\TopMargin = Application\InchesToPoints(1)
ActiveSheet\PageSetup\BottomMargin = Application\InchesToPoints(1)
ActiveSheet\PageSetup\HeaderMargin = Application\InchesToPoints(1)
ActiveSheet\PageSetup\FooterMargin = Application\InchesToPoints(1)
4.

Code: Alles auswählen

Range('D12:E12')\Merge
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:

Beitrag von Falko »

>>>1. Einen Dateinamen kann man direkt nicht mitgeben. Das regelt man darüber, das man die Datei gleich zu beginn mit SaveAs speichert.

Soweit ich das gestern schon probiert hatte, braucht man das nicht am
Anfang machen, sondern zum Zeitpunkt des Speicherns mit SaveAS.
Da generell beim öffnen einer neuen Excel-Mappe z.B. Mappe1.xls
vorgebeben wird. Darum kann man die Funktion ... Open ... weglassen,
wenn man wie hier im Beispiel eine Neue ExcelMappe mit eigenen
Tabellennamen erstellen möchte, wo auch noch was eingetragen wird.

Geht prima :allright: . Damit die Mappe ins aktuelle Verzeichnis
erstellt wird, sollte man diesen Source compilieren und dann im Verzeichnis die Exe ausführen.

Code: Alles auswählen

#xlUp=-4162
IncludePath #PB_Compiler_Home+"comate_pb4-3" 
XIncludeFile "COMate.pbi"
Pfad.s=GetCurrentDirectory()+"Meine neue Excel-Mappe.xls"; Dateiname mit Path-Vorgabe
Debug Pfad
Define.COMateObject ExcelObject, WorkBook,WorkSheet,myRange,answer
Define myRange.ComateObject
ExcelObject = COMate_CreateObject("Excel.Application")
If ExcelObject
    ExcelObject\SetProperty("Visible = #False"); Excel im Hintergrund. Kann man nur im Taskmanager sehen
    WorkBook = ExcelObject\GetObjectProperty("Workbooks\Add"); fügt eine Tabelle hinzu
    ExcelObject\SetProperty("WorkSheets(1)\Name = 'ErsteTabelle'"); Tabelle1 mit Namen verzeichnen
    ExcelObject\SetProperty("Cells(1,1) = 'Hello'"); schreibe Hello in Zelle A1
    ExcelObject\SetProperty("Cells(1,2) = 'from'") ; schreibe from in Zelle B1
    ExcelObject\SetProperty("Cells(1,3) = 'COMate!'");schreibe COMate in Zeile C1
    ExcelObject\SetProperty("Cells(" + Str(intRow) + ",14) = "+ Cell6$ + "")
    ExcelObject\SetProperty("Application\DisplayAlerts = #False") ; Excel-Alerts vor dem Speichern und Beenden ausschalten
    ExcelObject\Invoke("ActiveWorkbook\SaveAs('"+Pfad+"')") ; hier wird der Dateiname nach füllen der Tabelle mitgegeben
    ExcelObject\Invoke("ActiveWorkbook\Close"); Schließe aktive Tabelle
    ExcelObject\Invoke("Workbooks\Close"); Schließe Excelmappe
    ExcelObject\Invoke("Quit()")
    ExcelObject\SetProperty("Application\DisplayAlerts = #True") ; Excel-Alerts wieder aktivieren
    ExcelObject\Release(); Hiermit immer das Objekt zuletzt freigeben
Else
  MessageRequester("COMate -Excel demo", "Couldn't create the application object!")
EndIf
[Edit] Zur Umrandung einer Zelle, würde ich empfehlen, folgende Procedure SetBorders() in comate anzupassen.
Komplette Beispiele zum Disphelper und Excel findet man hier:

http://www.purebasic.fr/german/viewtopi ... ight=excel

[/Edit]

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
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:

Beitrag von Falko »

Zu Punkt 3, Zelle oder Zeile Umranden habe allgemein die alten
Disphelper-ExcelFunktionen , soweit wie ich das nach Comate anpassen
konnte, umgestellt.

Ich hoffe das hiermit viele Fragen beantwortet werden können :wink:

http://www.purebasic.fr/german/viewtopi ... 466#239466


Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Beitrag von ThoPie »

Vielen Dank. Jetzt komme ich weiter.
Bild
Antworten