Seite 1 von 1

COMate und Excel - einige Fragen

Verfasst: 31.03.2009 18:41
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.

Verfasst: 01.04.2009 15:01
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

Verfasst: 01.04.2009 22:59
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

Verfasst: 05.04.2009 01:33
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

Verfasst: 05.04.2009 14:56
von ThoPie
Vielen Dank. Jetzt komme ich weiter.