Jump to content
DrewSS

ObjGet/With/Excel highlighting

Recommended Posts

DrewSS

Hello,

 

Can someone please try to guide me to using ObjGet or With the correct way? I have a feeling I am doing something wrong.

I am trying to open an excel document and highlight certain cells based on their values and some calculations.

 

The following works fine to make these changes on a new workbook - but I have not been able to use With when opening an already existing outlook workbook; perhaps I'm opening it incorrectly.

$oExcel = ObjCreate("Excel.Application")
With $oExcel ; open new workbook
    .Visible = True
    .WorkBooks.Add
    .ActiveWorkbook.Sheets(1).Select()
EndWith
$oExcel.ActiveSheet.Range("A1").Interior.ColorIndex = 3

 

Here is an example of what I am trying to do (this does not work):

Local $oApplM = _Excel_Open()
Local $oExcelM = _Excel_BookOpen($oApplM, $morning_insights)
Local $aArrayM = _Excel_RangeRead($oExcelM, Default, $oExcelM.ActiveSheet.Usedrange.Columns("A:N"), 1, True)
$percentage = InputBox("Capping percentage", "Enter percentage to calculate")

For $a = 3 To UBound($aArrayM) -1
Local $b = $aArrayM[$a][1]
If $b >  "." & $percentage Then
$oExcelM.ActiveSheet.Range("B1").Interior.ColorIndex =3
EndIf
Next

 

Share this post


Link to post
Share on other sites
water
Here is an example of what I am trying to do (this does not work)

​What do you mean by "does not work"?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
water

This line

If $b >  "." & $percentage Then

does a string comparison.
Best would be

If $b >  $percentage/100 Then

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
DrewSS

Hi water!

Sorry I should have been more specific.

 

The Interior.ColorIndex is not working when called with the second set of code, but it does work with when used with ObjCreate.

Local $oApplM = _Excel_Open()
Local $oExcelM = _Excel_BookOpen($oApplM, $report)
Local $aArrayM = _Excel_RangeRead($oExcelM, Default, $oExcelM.ActiveSheet.Usedrange.Columns("A:N"), 1, True)
With $oApplM.ActiveWorkbook.Sheets(1)
    .Range("A4").Interior.ColorIndex =3
EndWith

What is missing? It opens the document but does not change the color. I cant find where to find the list of the commands that With uses, (i.e. .Range, .Interior, etc...)

 

Your formula makes more sense also - i'll use that too! But my primary challenge is to highlight cells.

 

Edited by DrewSS

Share this post


Link to post
Share on other sites
water

With is not needed in this case. It is used to improve performance because a part of the expression (e.g. "$oApplM.ActiveWorkbook.Sheets(1)") only needs to be evaluated one time.
Can't tell at the moment what is wrong with your example (no Excel here). Will test tomorrow and post the result.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
232showtime

your script works fine with me, added some line to work in my side, I put random nos. in input box and ROWS COLOR CHANGED..

#include <Excel.au3> ;added line

Local $oApplM = _Excel_Open()
Local $morning_insights = "C:\CheckList.xlsx" ;added line
Local $oExcelM = _Excel_BookOpen($oApplM, $morning_insights)
Local $aArrayM = _Excel_RangeRead($oExcelM, Default, $oExcelM.ActiveSheet.Usedrange.Columns("A:N"), 1, True)
$percentage = InputBox("Capping percentage", "Enter percentage to calculate")

With $oApplM.ActiveWorkbook.Sheets(1)
    .Range("A4").Interior.ColorIndex =3
EndWith

 

Edited by 232showtime
  • Like 1

ill get to that... i still need to learn and understand a lot of codes graduated.gif

Correct answer, learn to walk before you take on that marathon.

Share this post


Link to post
Share on other sites
water

This works fine for me and displays cell A4 in red:

#include <Excel.au3>
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookNew($oExcel)
$oWorkbook.Sheets(1).Range("A4").Interior.ColorIndex = 3

 

  • Like 1

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
water

Hi  just want to ask quick and simple question, where did you get this .Interior.ColorIndex and this ObjGet("", "Excel.Application"), is there a list fo excel Obj Classname/INstance like

ObjCreate("Excel.Application")

im totally confused, Im wondering where did you get those command

.Visible

.workbooks.add

.Close

​This can be found on MSDN (Microsoft Developer Network). Excel Developer Reference for Excel 2010.

  • Like 2

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
DrewSS

This works fine for me and displays cell A4 in red:

#include <Excel.au3>
$report = @ScriptDir & "\book1.xlsx"
Local $oApplM = _Excel_Open()
Local $oExcelM = _Excel_BookOpen($oApplM, $report) -edited
$oExcelM.Sheets(1).Range("A4").Interior.ColorIndex =3

 

 

This is working as intended -- very much appreciated!

Great source too: Excel Developer Reference for Excel 2010.

 

 

 

​Thanks again (and again.. and again...and again...) water!! :-D


So far with your help over the past year or two I've automated and saved many hundreds of hours!

 

 

And thank you 232showtime

 

Share this post


Link to post
Share on other sites
232showtime

yeah water's UDF for msoffice is really great, i save time because of waters excel udf.. thank you water...


ill get to that... i still need to learn and understand a lot of codes graduated.gif

Correct answer, learn to walk before you take on that marathon.

Share this post


Link to post
Share on other sites
water

:)
I hope you both got a raise from your boss ;)

  • Like 1

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • AnonymousX
      By AnonymousX
      Sorry if this is a repost, but having some trouble searching for the answer and pretty tired right now.
      I'm just wondering how to make a border around a range of cells in Excel. I want the regular lines created by selecting "All Borders" option around F2:G3
      I saw this code:
      With $oExcel.ActiveSheet.range("F2:G3") .Select .Borders($xlEdgeBottom).LineStyle = $xlContinuous .Borders($xlEdgeBottom).Weight = $xlThick .Borders($xlEdgeBottom).ColorIndex = $xlAutomatic EndWith but I get errors of these variables not existing. It seems these no longer exist in the "#include <Excel.au3>"
      Is there another include file I need?
      I got this to work for highlighting cells, wondering if there is a option similar to this for all borders?
      $oExcel.ActiveSheet.Range("F2:G3").Interior.ColorIndex = 6 Thanks
    • YouriKamperman
      By YouriKamperman
      I am working on a script that will turn all file names in a directory into an array, and then writes this Array to an Excel file.
      This in itself is working, but the RangeWrite function always puts the Array count in the first cell.
      How can i make sure this does not happen? I can of course just filter it out in Excel, but i am trying to keep all logic of filtering text in my script.
      This is what my script looks like:
      Local $Yesterday = _DateAdd('d', -1, _NowCalcDate())
      Local $cDate = StringReplace($Yesterday, "/", "-")
      Local $aFileList = _FileListToArray(@WorkingDir & "/" & $cDate, "*")
      Local $oExcel = _Excel_Open()
      Local $oWorkbook = _Excel_BookNew($oExcel)
      _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aFileList)
    • Eminence
      By Eminence
      Hello,
      Is there a way wherein I can access the data from an array coming from an Excel file then have it assigned on to a variable?
      Below is a snippet of my current code. For now, it just reads and outputs the data from the excel file and have it displayed via an array.
      #include <Array.au3> #include <Excel.au3> #include <MsgBoxConstants.au3> Local $oExcel = _Excel_Open(False) If @error Then Exit MsgBox(0, "Error", "Error creating application object." & @CRLF & "Error: " & @error & " Extends: " & @extended) ; Open Excel Woorkbook and return object Local $sWorkbook = @ScriptDir & "\Excel Files\Test Data.xlsx" Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, False, True) If @error Then MsgBox(0, "Error", "Error opening workbook'" & $sWorkbook & ".'" & @CRLF & "Error: " & @error & "Extends: " & @extended) _Excel_Close($oExcel) Exit EndIf Local $aResult = _Excel_RangeRead($oWorkbook) ; Error Trapping If @error Then MsgBox(0, "Error", "Error reading data from '" & $sWorkbook & ".'" & @CRLF & "Error: " & @error & " Extends: " & @extended) _Excel_Close($oExcel) Exit EndIf _ArrayDisplay($aResult) My Excel file has values from Column A to H with values from 1 to 30, what I desired to do is have the value in "A7" assigned on to a variable. 
       
      Any help is appreciated. Thanks in advance.
    • JNutt
      By JNutt
      I am trying to close an excel file that was not opened with _Excel_Open.  How do I found the excel application object?  I'm new and I am used to files and folders names, so an 'object' is new to me.  I have the info too and simply spy, but I don't know which info is the object name/string.  In the example from help doc's I see the code below and I tried justin pasting it into Scite.
      <
      Local $oExcel1 = ObjCreate("Excel.Application")
      ; Close the Excel instance which was not opened by _Excel_Open
      ; (will still be running because it was not opened by _Excel_Open)
      _Excel_Close($oExcel1)
      If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Example 1", "Error closing the Excel application." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
      Sleep(2000)
      Local $aProcesses = ProcessList("Excel.exe")
      MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_Close Example 1", "Function ended successfully." & @CRLF & @CRLF & $aProcesses[0][0] & " Excel instance(s) still running.")
      >
    • rudi
      By rudi
      Hello,
      I used the various "_Excel_*()" funktions to open workbooks, read and write cells.
       
      I was looking through the helpfile for the _EXCEL_* funktions, if there is a direkt way to set background color or text color -- if there is one, then I missed it?
       
      Searching the forum I found this posting demonstrating how to do this task using ...
      ObjCreate("Excel.Application")  
      Is there a way to set the background color etc. with the native "_EXCEL_*" as well?
       
      Regards, Rudi.
       
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.