Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

EXCEL COM Tutorial Automatisieren, Bedienen


  • Please log in to reply
No replies to this topic
IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007

Hallo und willkommen im Excel COM Tutorial Thread. (dieser Thread wurde manuell aus dem alten Forum übernommen)


Grundlagen
Häufig benötigte Objekte. Die Links führen gleich zu einer Auflistung aller Methoden/Properties des jeweiligen Objektes.

Excel.Application (Excel Programm Instanz

Um Excel über COM fernzubedienen, benötigst du eine Instanz des "Excel.Application" Objektes. 
Entweder macht man davon eine neue Instanz (ComObjCreate) oder man will auf ein offenes Excel zugreifen, was der User zurzeit geöffnet hat (ComObjActive). 
Dieses Objekt hat ein Property namens "Workbooks", was sämtliche Dateien enthält, die aktuell in dieser Excel Instanz geöffnet sind. 

WorkBook (Excel Datei
Dieses Objekt hat grundlegende Properties zu der Excel Datei - Speicherpfad, SaveAs() Methoden und Dinge dieser Art. 
Ebenfalls führt dieses Objekt ein Property namens "Worksheets", dort sind sämtliche Sheets (die Tabs unten in Excel) in dieser Datei aufgelistet. 


Worksheet (Sheet -> Datenbereich, enthält die Zellen
Ein Worksheet ist eines der wichtigsten Objekte, da dort alle Zellen erreichbar sind. Daher wird es oft verwendet wenn man Excel fernsteuert. 
Um eine oder Mehrere Zellen zu bekommen, hat dieses Objekt die Methode Range(""). Als Range kann man eine einzelne Zelle angeben Range("A5"), oder eben ganze Bereiche Range("A5:Z6").
 
Code Beispiele


xls erstellen, Wert reinschreiben, und speichern

ComObjError(true) ; Zeige uns COM Fehler an


excel := ComObjCreate("Excel.Application") ;// startet eine Excel Instanz
excel.Visible := false

workBook := excel.Workbooks.Add() ;// Neue Datei (=workbook)
sheet := workBook.Worksheets[1] ;// Erstes Sheet in unserer datei

cell := sheet.Range("A1") ;// Range, hier eine einzelne Zelle
cell.Value := "Hello World" ;// etwas in unsere Zelle schreiben


workBook.SaveAs(A_ScriptDir "\Hello World.xls") ;// unsere Datei speichern
workBook.Close() ;// unsere Datei schliessen
;hier evtl noch Excel schliessen
exitapp

 
auf geöffnetes Excel zugreifen, Aktuelle Zelle ändern, Worksheet (Tabelle) wechseln

excel := ComObjActive("Excel.Application") ;// aktuell laufende Excel Instanz

workBook  := excel.ActiveWorkbook  ;// aktuell geöffnete Datei
currentSheet := excel.ActiveSheet ;// aktuell geöffnete Tabelle
cell := excel.ActiveCell ;// aktuelle Zelle

cell.Value := "Huhu" ;// schreibt huhh in die aktive Zelle

;wechselt in die zweite tabelle
sheet := workBook.Worksheets[2] ;// tab 2
sheet.Activate()

 
Formatieren 

Hintergrund Farbe & Font Bold (Fett)

cell := sheet.Range("A1")
cell.Value := "Hello World"
cell.Interior.Color := 0xAAFFBB ;// RGB Farbe
cell.Font.Bold := true ;// Bold auf true setzten