====== Excel.Application ======
//Original post by [[user:Learning one]] on the [[https://www.autohotkey.com/board/topic/56987-com-object-reference-autohotkey-v11/?p=381256|AutoHotkey Archived Forums]]//
----
**COM Object:** ''Excel.Application''
**Purpose:** Perform calculations, analyse information and visualise data in spreadsheets.
**System Requirements:** Microsoft Office Excel application
**Documentation Link:** [[https://docs.microsoft.com/en-us/office/vba/api/excel.application(object)|Application Object (Excel)]]
**Other Links:** [[http://dmcritchie.mvps.org/excel/colors.htm|ColorIndex values]]
**Basic Code Example:**
oExcel := ComObjCreate("Excel.Application") ; create Excel Application object
oExcel.Workbooks.Add ; create a new workbook (oWorkbook := oExcel.Workbooks.Add)
oExcel.Range("A1").Value := 3 ; set cell A1 to 3
oExcel.Range("A2").Value := 7 ; set cell A2 to 7
oExcel.Range("A3").Formula := "=SUM(A1:A2)" ; set formula for cell A3 to SUM(A1:A2)
oExcel.Range("A1:A3").Interior.ColorIndex := 19 ; fill range of cells from A1 to A3 with color number 19
oExcel.Range("A3").Borders(8).LineStyle := 1 ; set top border line style for cell A3 (xlEdgeTop = 8, xlContinuous = 1)
oExcel.Range("A3").Borders(8).Weight := 2 ; set top border weight for cell A3 (xlThin = 2)
oExcel.Range("A3").Font.Bold := 1 ; set bold font for cell A3
A1 := oExcel.Range("A1").Value ; get value from cell A1, and store it in A1 variable
oExcel.Range("A4").Select ; select A4 cell
oExcel.Visible := 1 ; make Excel Application visible
MsgBox % A1 "`n" oExcel.Range("A2").Value ; check. You can use Round() function to round numbers to the nearest integer
ExitApp
**How to access Workbook without opening it?**
FilePath := "C:\Book1.xlsx" ; example path
oWorkbook := ComObjGet(FilePath) ; access Workbook object
MsgBox % oWorkbook.Sheets(1).Range("A1").Value ; get value from A1 cell in first sheet
**How to access active Excel Application object?**
Use ''oExcel := Excel_Get()'', not ''oExcel := ComObjActive("Excel.Application")''. More info [[http://www.autohotkey.com/forum/viewtopic.php?p=518613#518613|here]].
**How to access active Workbook?**
try
oWorkbook := Excel_Get().ActiveWorkbook ; try to access active Workbook object
catch
return ; case when Excel doesn't exist, or it exists but there is no active workbook. Just Return or Exit or ExitApp.
; if there is active workbook, code continues execution...
oWorkbook.ActiveSheet.Range("B2").Value := "B2" ; set value of B2 cell in active sheet to "B2"
**How to access Excel object from Workbook object?**
oExcel := oWorkbook.Application ; returns Excel application object that owns Workbook object