iahngy Posted February 18, 2013 Share Posted February 18, 2013 Hi , Is it possible to change color of a char among characters while AutoIt is writing to a row in Excel? for ex, I am writing ABC then I wnt to change to red for the next char W ...so ABC will be black and W will be red...all in 1 row. Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 Start the macro recorder in Excel and do what you want to do. Then post the VBA code here. We will then try to translate it to AutoIt. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
jdelaney Posted February 18, 2013 Share Posted February 18, 2013 google: excel vba multicolor text first result ActiveCell = "Red and Blue" ActiveCell.Characters(Start:=1, Length:=3).Font.ColorIndex = 3 ActiveCell.Characters(Start:=9, Length:=4).Font.ColorIndex = 5 iahngy 1 IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 In AutoIt: $oExcel.ActiveCell.Characters(1, 3).Font.ColorIndex = 3 $oExcel.ActiveCell.Characters(9, 4).Font.ColorIndex = 5$oExcel is the Excel application object. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
iahngy Posted February 18, 2013 Author Share Posted February 18, 2013 (edited) In this macro, at start, i set font to courier new and bold and color as black ..then I typed ABCD ..then change font color to orange for EF then change back to black for the stars expandcollapse popupSub Macro4() ' ' Macro4 Macro ' ' With Selection.Font .Name = "Courier New" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True With Selection.Font .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 End With ActiveCell.Select ActiveCell.FormulaR1C1 = "ABCDEF****" With ActiveCell.Characters(Start:=1, Length:=4).Font .Name = "Courier New" .FontStyle = "Bold" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With With ActiveCell.Characters(Start:=5, Length:=2).Font .Name = "Courier New" .FontStyle = "Bold" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249977111117893 .ThemeFont = xlThemeFontNone End With With ActiveCell.Characters(Start:=7, Length:=4).Font .Name = "Courier New" .FontStyle = "Bold" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With ActiveCell.Offset(1, 0).Range("A1").Select Application.Goto Reference:="Macro4" End Sub Edited February 18, 2013 by iahngy Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 I normally pass $row and $col to the function ..i dont use R1C1 ...So you want to set the active cell by your script? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
iahngy Posted February 18, 2013 Author Share Posted February 18, 2013 Yes...I m trying to write the code base on the macro...hihi...i lost the previous macro which has the code for orange color... Link to comment Share on other sites More sharing options...
iahngy Posted February 18, 2013 Author Share Posted February 18, 2013 how do i set value in autoit from this macro ' ....i pass $row, $col to a funct. ActiveCell.FormulaR1C1 = "ABCDEF****" Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 In this macro, at start, i set font to courier new and bold and color as black ..then I typed ABCD ..then change font color to orange for EF then change back to black for the starsBut as you can see from the recorded macro Excel does it the other way round. First the cell is filled with the value and then the characters are formated. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 how do i set value in autoit from this macro ' ....i pass $row, $col to a funct. ActiveCell.FormulaR1C1 = "ABCDEF****" Use$oExcel.Activesheet.Cells($Row, $Col).Value = $Value My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
iahngy Posted February 18, 2013 Author Share Posted February 18, 2013 (edited) I got it work ...Thank you H20 !!..by this I know how to record macro heheh. func writex($row,$col, $oExcel) with $oExcel .cells($row, $col).font.name = "Courier New" .cells($row, $col).font.Bold = True .cells($Row, $col).Value = 'ABCDEF***' .cells($Row, $col).Characters(1,4).font.colorindex = 32 .cells($Row, $col).Characters(5,6).font.colorindex = 42 .cells($Row, $col).Characters(7,9).font.colorindex = 32 EndWith EndFunc Edited February 18, 2013 by iahngy Link to comment Share on other sites More sharing options...
water Posted February 18, 2013 Share Posted February 18, 2013 Glad your problem could be solved. Be careful when you take code created by the Excel recorder and translate it to AutoIt. The recorder uses selections (that's what you see on the screen when clicking on a cell). If you do a lot of processing selections slow down your script because every change is displayed on the screen. Use ranges for better performance. Have a look at the Excel UDF that comes with AutoIt or my rewrite of the Excel UDF (still in an early alpha release). My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
iahngy Posted February 18, 2013 Author Share Posted February 18, 2013 use range like R1C1 ? instead of passing $row, $col? you think that code will be ok for writing to excel for about 200 cells just using ($row, $col ) ? Link to comment Share on other sites More sharing options...
iahngy Posted February 19, 2013 Author Share Posted February 19, 2013 Hi Water, I copied from excel.au3 the range function to set font as below, ..what if i dont know in advance the end of the row for a range because i dont know how long data is from a source..how can i set the font w/o knowing the range? in this ex, i assume rowend is 300 rows..but what if i dont know the row end ...how can i set the whole sheet then? .activesheet.range($oExcel.cells(1,1), $oExcel.cells(300,10)).font.name = "Courier New" this labtop wont let met paste in autoit window Link to comment Share on other sites More sharing options...
water Posted February 19, 2013 Share Posted February 19, 2013 you think that code will be ok for writing to excel for about 200 cells just using ($row, $col ) ?For 200 cells you shouldn't note any difference. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
water Posted February 19, 2013 Share Posted February 19, 2013 Hi Water, I copied from excel.au3 the range function to set font as below, ..what if i dont know in advance the end of the row for a range because i dont know how long data is from a source..how can i set the font w/o knowing the range? in this ex, i assume rowend is 300 rows..but what if i dont know the row end ...how can i set the whole sheet then? .activesheet.range($oExcel.cells(1,1), $oExcel.cells(300,10)).font.name = "Courier New" this labtop wont let met paste in autoit window If you know the columns you could use something like this: .activesheet.range("A:G").font.name = "Courier New"sets the font for columns A to G. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
iahngy Posted February 19, 2013 Author Share Posted February 19, 2013 (edited) Thank you H20..This way from A to G is perfect. Edited February 19, 2013 by iahngy Link to comment Share on other sites More sharing options...
water Posted February 19, 2013 Share Posted February 19, 2013 Glad to be of service My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now