Jump to content
water

ExcelChart UDF - Help & Support

Recommended Posts

==Originally posted on the download thread (can't edit/remove it that I can see) ==

When creating charts using _XLChart_ChartCreate(), the chart name is not being set (it seems to work for charts created on a chart sheet).

For example, if I pass "A" into the $sXLC_ChartName parameter, and run _XLChart_ChartsGet(), the chart name is listed as "Chart 1". It is also listed as "Chart 1" in the Layout ribbon with the chart selected in excel.

I've added a messagebox to the _XLChart_ChartCreate() to make sure the value is passed in properly, and it is. The $oXLC_Chart.Name value will display as "SheetName Chart 1" where sheet name is the name of the sheet that has the chart.

Is it possible to get more info on what is wrong? Or perhaps have _XLChart_ChartsGet() also pull the chart title?

This UDF is otherwise very handy so far! Your beta release was perfect timing!

Share this post


Link to post
Share on other sites

To edit/remove a post you have to have at least a post count of 5 - IIRC.

I'm going to answer your question here.

What version of Excel do you use?

We have noticed a strange behaviour with the name property but haven't been able to find the reason.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

I confirm that this is an issue on my Excel 2007 as well as Excel 2010.

I didn't notice the issue because I didn't focus on the chart names (yet...)... sorry for this.

In debug mode I get effectively following error:

Error 2147352567 (80020009) 'Not enough storage is available to complete this operation'

for this line:

If $sXLC_ChartName <> "" Then $oXLC_Chart.Name = $sXLC_ChartName

When I use the raw code outside the function, for example

$oChart.Name = "Main Chart"

I get the same error.

I will search for a workaround and if possible for a bugfix.

Changing the chart name in interactive mode (Layout, Properties) works, so I guess we should find what is wrong in the code.

GreenCan


Contributions

CheckUpdate - SelfUpdating script ------- Self updating script

Dynamic input validation ------------------- Use a Input masks can make your life easier and Validation can be as simple

MsgBox with CountDown ------------------- MsgBox with visual countdown

Display Multiline text cells in ListView ---- Example of pop-up or ToolTip for multiline text items in ListView

Presentation Manager ---------------------- Program to display and refresh different Border-less GUI's on a Display (large screen TV)

USB Drive Tools ------------------------------ Tool to help you with your USB drive management

Input Period udf ------------------------------ GUI for a period input

Excel ColorPicker ---------------------------- Color pickup tool will allow you to select a color from the standard Excel color palette

Excel Chart UDF ----------------------------- Collaboration project with water 

GetDateInString ------------------------------ Find date/time in a string using a date format notation like DD Mon YYYY hh:mm

TaskListAllDetailed --------------------------- List All Scheduled Tasks

Computer Info --------------------------------- A collection of information for helpdesk

Shared memory Demo ----------------------- Demo: Two applications communicate with each other through means of a memory share (using Nomad function, 32bit only)

Universal Date Format Conversion -------- Universal date converter from your PC local date format to any format

Disable Windows DetailsPane -------------- Disable Windows Explorer Details Pane

Oracle SQL Report Generator -------------  Oracle Report generator using SQL

SQLite Report Generator -------------------  SQLite Report generator using SQL

SQLite ListView and BLOB demo ---------- Demo: shows how binary (image) objects can be recognized natively in a database BLOB field

DSN-Less Database connection demo --- Demo: ActiveX Data Objects DSN-Less Database access

Animated animals ----------------------------- Fun: Moving animated objects

Perforated image in GUI --------------------- Fun: Perforate your image with image objects

UEZ's Perforator major update ------------- Fun: Pro version of Perforator by UEZ

Visual Crop Tool (GUI) ----------------------- Easy to use Visual Image Crop tool

Visual Image effect (GUI) -------------------- Visually apply effects on an image

 

 

 

Share this post


Link to post
Share on other sites

I think this remark explains what's going on.

"This property is read-only for chart objects (embedded charts)."

So you can set the name for a chartsheet but not for a chart object.

In the next version of the UDF the parameter will be ignored for embedded charts work for both chartsheets and embedded charts.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

You are correct water but there is a solution...

This works:

$oChart1.Parent.Name = "Name of this Chart"

@valiryon, you can use this as a workaround until we come with a new release. that will be pretty soon (a matter of days).

... I am having a coffee break now :)

Edited by GreenCan

Contributions

CheckUpdate - SelfUpdating script ------- Self updating script

Dynamic input validation ------------------- Use a Input masks can make your life easier and Validation can be as simple

MsgBox with CountDown ------------------- MsgBox with visual countdown

Display Multiline text cells in ListView ---- Example of pop-up or ToolTip for multiline text items in ListView

Presentation Manager ---------------------- Program to display and refresh different Border-less GUI's on a Display (large screen TV)

USB Drive Tools ------------------------------ Tool to help you with your USB drive management

Input Period udf ------------------------------ GUI for a period input

Excel ColorPicker ---------------------------- Color pickup tool will allow you to select a color from the standard Excel color palette

Excel Chart UDF ----------------------------- Collaboration project with water 

GetDateInString ------------------------------ Find date/time in a string using a date format notation like DD Mon YYYY hh:mm

TaskListAllDetailed --------------------------- List All Scheduled Tasks

Computer Info --------------------------------- A collection of information for helpdesk

Shared memory Demo ----------------------- Demo: Two applications communicate with each other through means of a memory share (using Nomad function, 32bit only)

Universal Date Format Conversion -------- Universal date converter from your PC local date format to any format

Disable Windows DetailsPane -------------- Disable Windows Explorer Details Pane

Oracle SQL Report Generator -------------  Oracle Report generator using SQL

SQLite Report Generator -------------------  SQLite Report generator using SQL

SQLite ListView and BLOB demo ---------- Demo: shows how binary (image) objects can be recognized natively in a database BLOB field

DSN-Less Database connection demo --- Demo: ActiveX Data Objects DSN-Less Database access

Animated animals ----------------------------- Fun: Moving animated objects

Perforated image in GUI --------------------- Fun: Perforate your image with image objects

UEZ's Perforator major update ------------- Fun: Pro version of Perforator by UEZ

Visual Crop Tool (GUI) ----------------------- Easy to use Visual Image Crop tool

Visual Image effect (GUI) -------------------- Visually apply effects on an image

 

 

 

Share this post


Link to post
Share on other sites

Version 0.2.2.0 has been released.

Have fun testing!

For download please see my signature.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

@Saxo

Can you please post a screenshot of the chart you get and - if possible - a screenshot of the chart as it should look like?

( to the original post).

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Water, thank you for your very fast reply. I'm not sure how to post the image, but it is a normal 2D column chart with dates on the x-axis and price on the y-axis. 2 different columns are shown per date. Hope this helps you in your investigation.

Share this post


Link to post
Share on other sites

IIRC you will need to have at least 5 posts before you can add attachments to your posts.

I will test your script tomorrow when I'm in the office and post the results.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Hi Saxo,

some small changes and your chart should work:

In the UDF please change function _XLChart_ChartCreate. Move line

$oXLC_Chart.ChartType = $iXLC_ChartType
to the end of the function before lines
If $bXLC_ScreenUpdate = False Then $oXLC_Excel.ScreenUpdating = $iXLC_ScreenUpdating
Return SetError(0, $iXLC_ErrorHandler, $oXLC_Chart)

EndFunc   ;==>_XLChart_ChartCreate

Then please modify your script like this:

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ExcelChart.au3>
#include <Array.au3>
#include <Excel.au3>
Example()
Exit
Func Example()
    Local $oExcel = _ExcelBookNew()
    _ExcelWriteCell($oExcel, "Date", 1, 1)
    _ExcelWriteCell($oExcel, "02/24/2012", 2, 1)
    _ExcelWriteCell($oExcel, "02/23/2012", 3, 1)
    _ExcelWriteCell($oExcel, "02/22/2012", 4, 1)
    _ExcelWriteCell($oExcel, "02/21/2012", 5, 1)
    _ExcelWriteCell($oExcel, "02/17/2012", 6, 1)
    $oExcel.ActiveSheet.Columns(1).AutoFit
    _ExcelWriteCell($oExcel, "Open", 1, 2)
    _ExcelWriteCell($oExcel, "68.682", 2, 2)
    _ExcelWriteCell($oExcel, "69.342", 3, 2)
    _ExcelWriteCell($oExcel, "69.203", 4, 2)
    _ExcelWriteCell($oExcel, "69.204", 5, 2)
    _ExcelWriteCell($oExcel, "69.485", 6, 2)
    $oExcel.ActiveSheet.Columns(2).AutoFit
    _ExcelWriteCell($oExcel, "High", 1, 3)
    _ExcelWriteCell($oExcel, "68.826", 2, 3)
    _ExcelWriteCell($oExcel, "69.375", 3, 3)
    _ExcelWriteCell($oExcel, "69.463", 4, 3)
    _ExcelWriteCell($oExcel, "69.364", 5, 3)
    _ExcelWriteCell($oExcel, "69.598", 6, 3)
    $oExcel.ActiveSheet.Columns(3).AutoFit
    _ExcelWriteCell($oExcel, "Low", 1, 4)
    _ExcelWriteCell($oExcel, "68.263", 2, 4)
    _ExcelWriteCell($oExcel, "68.654", 3, 4)
    _ExcelWriteCell($oExcel, "69.085", 4, 4)
    _ExcelWriteCell($oExcel, "68.891", 5, 4)
    _ExcelWriteCell($oExcel, "69.251", 6, 4)
    $oExcel.ActiveSheet.Columns(4).AutoFit
    _ExcelWriteCell($oExcel, "Close", 1, 5)
    _ExcelWriteCell($oExcel, "68.403", 2, 5)
    _ExcelWriteCell($oExcel, "68.882", 3, 5)
    _ExcelWriteCell($oExcel, "69.307", 4, 5)
    _ExcelWriteCell($oExcel, "68.135", 5, 5)
    _ExcelWriteCell($oExcel, "69.450", 6, 5)
    $oExcel.ActiveSheet.Columns(5).AutoFit
    $Graph_position = "K2:T24"
    $XValueRange = "=Sheet1!R2C1:R6C1"
    Local $DataRange[5] = [4, "=Sheet1!R2C2:R6C2", "=Sheet1!R2C3:R6C3", "=Sheet1!R2C4:R6C4","=Sheet1!R2C5:R6C5"]
    Local $DataName[5] = [4, "=Sheet1!B1", "=Sheet1!C1", "=Sheet1!D1", "=Sheet1!E1"]
    Local $iWorksheet = 1
    Local $oChart1 = _XLChart_ChartCreate($oExcel, $iWorksheet, $xlStockOHLC, $Graph_position, "", $XValueRange, $DataRange, $DataName);, True, "Sales", "Date", "", "Quantity")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Local $iFile = @ScriptDir & "TestExcelChartExport.png"
    _XLChart_ChartExport($oChart1, $iFile, "PNG", False, True)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Return
EndFunc   ;==>Example
Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Thx water - works great! I have continued with the example. My goal is to calculate Pivot Points (see http://en.wikipedia.org/wiki/Pivot_point) and plot them in the Excel chart per date bar. Is it possible to make such plots and if so, how is it done (preferably with with different coloring and labeling of the 5 points per bar)?

Calculating the Pivot Points inside Excel has faced me with the following issues:

  • I would like to format the prices so that they are written e.g. 69,450 instead of 69.450 (I assume that .NumberFormat should be used somehow). Currently the calculations are messed up because of this.
  • Is there a smarter way for me to write the same formula accros many rows (other than repeating it in the code like I did)?
Below I have pasted the code like it looks now.

Best regards,

Saxo

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ExcelChart.au3>
#include <Array.au3>
#include <Excel.au3>
Example()
Exit
Func Example()
    Local $oExcel = _ExcelBookNew()
    _ExcelWriteCell($oExcel, "Date", 1, 1)
    _ExcelWriteCell($oExcel, "02/24/2012", 2, 1)
    _ExcelWriteCell($oExcel, "02/23/2012", 3, 1)
    _ExcelWriteCell($oExcel, "02/22/2012", 4, 1)
    _ExcelWriteCell($oExcel, "02/21/2012", 5, 1)
    _ExcelWriteCell($oExcel, "02/17/2012", 6, 1)
    $oExcel.ActiveSheet.Columns(1).AutoFit
    _ExcelWriteCell($oExcel, "O", 1, 2)
    _ExcelWriteCell($oExcel, "68.682", 2, 2)
    _ExcelWriteCell($oExcel, "69.342", 3, 2)
    _ExcelWriteCell($oExcel, "69.203", 4, 2)
    _ExcelWriteCell($oExcel, "69.204", 5, 2)
    _ExcelWriteCell($oExcel, "69.485", 6, 2)
    $oExcel.ActiveSheet.Columns(2).AutoFit
    _ExcelWriteCell($oExcel, "H", 1, 3)
    _ExcelWriteCell($oExcel, "68.826", 2, 3)
    _ExcelWriteCell($oExcel, "69.375", 3, 3)
    _ExcelWriteCell($oExcel, "69.463", 4, 3)
    _ExcelWriteCell($oExcel, "69.364", 5, 3)
    _ExcelWriteCell($oExcel, "69.598", 6, 3)
    $oExcel.ActiveSheet.Columns(3).AutoFit
    _ExcelWriteCell($oExcel, "L", 1, 4)
    _ExcelWriteCell($oExcel, "68.263", 2, 4)
    _ExcelWriteCell($oExcel, "68.654", 3, 4)
    _ExcelWriteCell($oExcel, "69.085", 4, 4)
    _ExcelWriteCell($oExcel, "68.891", 5, 4)
    _ExcelWriteCell($oExcel, "69.251", 6, 4)
    $oExcel.ActiveSheet.Columns(4).AutoFit
    _ExcelWriteCell($oExcel, "C", 1, 5)
    _ExcelWriteCell($oExcel, "68.403", 2, 5)
    _ExcelWriteCell($oExcel, "68.882", 3, 5)
    _ExcelWriteCell($oExcel, "69.307", 4, 5)
    _ExcelWriteCell($oExcel, "68.135", 5, 5)
    _ExcelWriteCell($oExcel, "69.450", 6, 5)
    $oExcel.ActiveSheet.Columns(5).AutoFit
    ;$oExcel.ActiveSheet.Range("B2").NumberFormat = "#,###" ; How to change e.g. "69.450" to "69,450" ... for all price cells?
    _ExcelWriteCell($oExcel, "P=(O+H+L+C)/4", 1, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R2C2:R2C5)/4", 2, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R3C2:R3C5)/4", 3, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R4C2:R4C5)/4", 4, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R5C2:R5C5)/4", 5, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R6C2:R6C5)/4", 6, 6)
    $oExcel.ActiveSheet.Columns(6).AutoFit
    _ExcelWriteCell($oExcel, "S2=P-(H-L) ", 1, 7)
    _ExcelWriteFormula($oExcel, "=R2C6-(R2C3-R2C4)", 2, 7)
    _ExcelWriteFormula($oExcel, "=R3C6-(R3C3-R3C4)", 3, 7)
    _ExcelWriteFormula($oExcel, "=R4C6-(R4C3-R4C4)", 4, 7)
    _ExcelWriteFormula($oExcel, "=R5C6-(R5C3-R5C4)", 5, 7)
    _ExcelWriteFormula($oExcel, "=R6C6-(R6C3-R6C4)", 6, 7)
$oExcel.ActiveSheet.Columns(7).AutoFit
_ExcelWriteCell($oExcel, "S1=2×P-H", 1, 8)
    _ExcelWriteFormula($oExcel, "=2*R2C6-R2C3", 2, 8)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R3C3", 3, 8)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R4C3", 4, 8)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R5C3", 5, 8)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R6C3", 6, 8)
$oExcel.ActiveSheet.Columns(8).AutoFit
_ExcelWriteCell($oExcel, "R1=2×P-L", 1, 9)
    _ExcelWriteFormula($oExcel, "=2*R2C6-R2C4", 2, 9)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R3C4", 3, 9)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R4C4", 4, 9)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R5C4", 5, 9)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R6C4", 6, 9)
    $oExcel.ActiveSheet.Columns(9).AutoFit
    _ExcelWriteCell($oExcel, "R2=P+(H-L)", 1, 10)
    _ExcelWriteFormula($oExcel, "=R2C6+(R2C3-R2C4)", 2, 10)
    _ExcelWriteFormula($oExcel, "=R3C6+(R3C3-R3C4)", 3, 10)
    _ExcelWriteFormula($oExcel, "=R4C6+(R4C3-R4C4)", 4, 10)
    _ExcelWriteFormula($oExcel, "=R5C6+(R5C3-R5C4)", 5, 10)
    _ExcelWriteFormula($oExcel, "=R6C6+(R6C3-R6C4)", 6, 10)
    $oExcel.ActiveSheet.Columns(10).AutoFit
$Graph_position = "K2:T24"
    $XValueRange = "=Sheet1!R2C1:R6C1"
    Local $DataRange[5] = [4, "=Sheet1!R2C2:R6C2", "=Sheet1!R2C3:R6C3", "=Sheet1!R2C4:R6C4","=Sheet1!R2C5:R6C5"]
    Local $DataName[5] = [4, "=Sheet1!B1", "=Sheet1!C1", "=Sheet1!D1", "=Sheet1!E1"]
    Local $iWorksheet = 1
    Local $oChart1 = _XLChart_ChartCreate($oExcel, $iWorksheet, $xlStockOHLC, $Graph_position, "", $XValueRange, $DataRange, $DataName)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Local $iFile = @ScriptDir & "TestExcelChartExport.png"
    _XLChart_ChartExport($oChart1, $iFile, "PNG", False, True)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Return
EndFunc   ;==>Example

Share this post


Link to post
Share on other sites

@water,

Good fix!

@saxo,

Nice example.

I advise you to put the following line in the beginning of the script:

Global $iXLC_Debug = 2 (or = 1)

This will help you finding issues in your scipt, it helped water finding a bug :oops: in _XLChart_ChartCreate.

Thanks for your interest

GreenCan

Edited by GreenCan

Contributions

CheckUpdate - SelfUpdating script ------- Self updating script

Dynamic input validation ------------------- Use a Input masks can make your life easier and Validation can be as simple

MsgBox with CountDown ------------------- MsgBox with visual countdown

Display Multiline text cells in ListView ---- Example of pop-up or ToolTip for multiline text items in ListView

Presentation Manager ---------------------- Program to display and refresh different Border-less GUI's on a Display (large screen TV)

USB Drive Tools ------------------------------ Tool to help you with your USB drive management

Input Period udf ------------------------------ GUI for a period input

Excel ColorPicker ---------------------------- Color pickup tool will allow you to select a color from the standard Excel color palette

Excel Chart UDF ----------------------------- Collaboration project with water 

GetDateInString ------------------------------ Find date/time in a string using a date format notation like DD Mon YYYY hh:mm

TaskListAllDetailed --------------------------- List All Scheduled Tasks

Computer Info --------------------------------- A collection of information for helpdesk

Shared memory Demo ----------------------- Demo: Two applications communicate with each other through means of a memory share (using Nomad function, 32bit only)

Universal Date Format Conversion -------- Universal date converter from your PC local date format to any format

Disable Windows DetailsPane -------------- Disable Windows Explorer Details Pane

Oracle SQL Report Generator -------------  Oracle Report generator using SQL

SQLite Report Generator -------------------  SQLite Report generator using SQL

SQLite ListView and BLOB demo ---------- Demo: shows how binary (image) objects can be recognized natively in a database BLOB field

DSN-Less Database connection demo --- Demo: ActiveX Data Objects DSN-Less Database access

Animated animals ----------------------------- Fun: Moving animated objects

Perforated image in GUI --------------------- Fun: Perforate your image with image objects

UEZ's Perforator major update ------------- Fun: Pro version of Perforator by UEZ

Visual Crop Tool (GUI) ----------------------- Easy to use Visual Image Crop tool

Visual Image effect (GUI) -------------------- Visually apply effects on an image

 

 

 

Share this post


Link to post
Share on other sites

Hi,

I have not been able to figure out how to add a new series to the chart created. After the _XLChart_ChartCreate I have tried with:

;_XLChart_SeriesSet($oExcel.SeriesCollection(6), $xlLine)

;_XLChart_SeriesSet($oExcel[1].SeriesCollection(6), $xlLine)

;$oNewChartSerie = $oChart1.SeriesCollection.NewSeries

;$oNewChartSerie = $oExcel.SeriesCollection(6)

;_XLChart_SeriesSet($oNewChartSerie, $xlLine)

My aim is to plot a line per calculate point (S2, S1, P, R1, R2) per date, so that it on a date e.g. the second would look something like:

_

_

_

_

_

2

I believe that I with 5 points per day for 5 days would need 25 series where each serie would only contain a value for the date it needs to be calculated for (the rest of the dates would have blank value). I don't know if this is the right way or if there is a smarter way. But I'm stuck as long as I don't know how to add a line to the existing chart.

_

Edited by Saxo

Share this post


Link to post
Share on other sites

Use function _XLChart_SeriesAdd to add a data series to a chart. After the function call please check the returncode, @error and @extended.

To get additional COM error information please set

$iXLChart_Debug = 2
at the top of your script (after #include <ExcelChart.au3> of course).

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Hi Saxo,

to add an additional data series add the following code at the end of your script:

; Add a data series
_XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C8:R6C8", "=Sheet1!H1")
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
; Set the type of the data series
_XLChart_SeriesSet($oChart1.SeriesCollection(5), $XlLine)
Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

To set colors on the up and down bars and to make the bars smaller (by increasing the gap between the bars) use the following code:

; Format chart
_XLChart_FillSet($oChart1.Chartgroups(1).UpBars, -4)    ; Set the UpBars to green
If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
_XLChart_FillSet($oChart1.Chartgroups(1).DownBars, -3)  ; Set the DownBars to red
If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
_XLChart_ColumnGroupSet($oChart1.ChartGroups(1), 450)   ; Make the bars smaller (by making the gap between the bars bigger)
If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Thanks water - this managed to move me forward.

  • I have now tried to plot in the R2 values per date. For this I can't use $XlLine, because if I used this and only plot one value, then nothing is shown. So as an alternative I have used $xlLineMarkers - but I would prefer that a line (just as wide as the bar) is shown. Is this possible?
  • The current $xlLineMarkers solution shows some strange output, because D1, D3 & D4 shows R2 below H (?). R2 should be well above H. Is this an error?
  • If point 1) can be solved, then I would like R2 on each date to look the same in terms of color and style (currently Excel picks a new color and marker style per new line that I add). How can this be done?
  • Is it possible to call Excel in hidden mode?
The code currently looks like this:

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ExcelChart.au3>
#include <Array.au3>
#include <Excel.au3>
Example()
Exit
Func Example()
    Global $iXLC_Debug = 2 ;(or = 1)
    Local $oExcel = _ExcelBookNew()
    _ExcelWriteCell($oExcel, "Date", 1, 1)
    _ExcelWriteCell($oExcel, "D1", 2, 1)
_ExcelWriteCell($oExcel, "D2", 3, 1)
    _ExcelWriteCell($oExcel, "D3", 4, 1)
    _ExcelWriteCell($oExcel, "D4", 5, 1)
    _ExcelWriteCell($oExcel, "D5", 6, 1)
    $oExcel.ActiveSheet.Columns(1).AutoFit
    _ExcelWriteCell($oExcel, "O", 1, 2)
    _ExcelWriteCell($oExcel, "69,342", 2, 2)
_ExcelWriteCell($oExcel, "69,342", 3, 2)
    _ExcelWriteCell($oExcel, "69,203", 4, 2)
    _ExcelWriteCell($oExcel, "69,204", 5, 2)
    _ExcelWriteCell($oExcel, "69,485", 6, 2)
$oExcel.ActiveSheet.Columns(2).AutoFit
    _ExcelWriteCell($oExcel, "H", 1, 3)
    _ExcelWriteCell($oExcel, "68,826", 2, 3)
    _ExcelWriteCell($oExcel, "69,375", 3, 3)
    _ExcelWriteCell($oExcel, "69,463", 4, 3)
    _ExcelWriteCell($oExcel, "69,364", 5, 3)
    _ExcelWriteCell($oExcel, "69,598", 6, 3)
    $oExcel.ActiveSheet.Columns(3).AutoFit
    _ExcelWriteCell($oExcel, "L", 1, 4)
    _ExcelWriteCell($oExcel, "68,263", 2, 4)
    _ExcelWriteCell($oExcel, "68,654", 3, 4)
    _ExcelWriteCell($oExcel, "69,085", 4, 4)
    _ExcelWriteCell($oExcel, "68,891", 5, 4)
    _ExcelWriteCell($oExcel, "69,251", 6, 4)
    $oExcel.ActiveSheet.Columns(4).AutoFit
    _ExcelWriteCell($oExcel, "C", 1, 5)
    _ExcelWriteCell($oExcel, "68,403", 2, 5)
    _ExcelWriteCell($oExcel, "68,882", 3, 5)
    _ExcelWriteCell($oExcel, "69,307", 4, 5)
    _ExcelWriteCell($oExcel, "68,135", 5, 5)
    _ExcelWriteCell($oExcel, "69,450", 6, 5)
    $oExcel.ActiveSheet.Columns(5).AutoFit
    _ExcelWriteCell($oExcel, "P=(O+H+L+C)/4", 1, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R2C2:R2C5)/4", 2, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R3C2:R3C5)/4", 3, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R4C2:R4C5)/4", 4, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R5C2:R5C5)/4", 5, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R6C2:R6C5)/4", 6, 6)
    $oExcel.ActiveSheet.Columns(6).AutoFit
    _ExcelWriteCell($oExcel, "S2=P-(H-L) ", 1, 7)
    _ExcelWriteFormula($oExcel, "=R2C6-(R2C3-R2C4)", 2, 7)
    _ExcelWriteFormula($oExcel, "=R3C6-(R3C3-R3C4)", 3, 7)
    _ExcelWriteFormula($oExcel, "=R4C6-(R4C3-R4C4)", 4, 7)
    _ExcelWriteFormula($oExcel, "=R5C6-(R5C3-R5C4)", 5, 7)
    _ExcelWriteFormula($oExcel, "=R6C6-(R6C3-R6C4)", 6, 7)
$oExcel.ActiveSheet.Columns(7).AutoFit
_ExcelWriteCell($oExcel, "S1=2×P-H", 1, 8)
    _ExcelWriteFormula($oExcel, "=2*R2C6-R2C3", 2, 8)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R3C3", 3, 8)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R4C3", 4, 8)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R5C3", 5, 8)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R6C3", 6, 8)
$oExcel.ActiveSheet.Columns(8).AutoFit
_ExcelWriteCell($oExcel, "R1=2×P-L", 1, 9)
    _ExcelWriteFormula($oExcel, "=2*R2C6-R2C4", 2, 9)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R3C4", 3, 9)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R4C4", 4, 9)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R5C4", 5, 9)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R6C4", 6, 9)
    $oExcel.ActiveSheet.Columns(9).AutoFit
    _ExcelWriteCell($oExcel, "R2=P+(H-L)", 1, 10)
    _ExcelWriteFormula($oExcel, "=R2C6+(R2C3-R2C4)", 2, 10)
    _ExcelWriteFormula($oExcel, "=R3C6+(R3C3-R3C4)", 3, 10)
    _ExcelWriteFormula($oExcel, "=R4C6+(R4C3-R4C4)", 4, 10)
    _ExcelWriteFormula($oExcel, "=R5C6+(R5C3-R5C4)", 5, 10)
    _ExcelWriteFormula($oExcel, "=R6C6+(R6C3-R6C4)", 6, 10)
    $oExcel.ActiveSheet.Columns(10).AutoFit
_ExcelWriteCell($oExcel, "R2 on D1", 1, 11)
    _ExcelWriteFormula($oExcel, "=R2C6+(R2C3-R2C4)", 2, 11)
    _ExcelWriteFormula($oExcel, "", 3, 11)
    _ExcelWriteFormula($oExcel, "", 4, 11)
    _ExcelWriteFormula($oExcel, "", 5, 11)
    _ExcelWriteFormula($oExcel, "", 6, 11)
    $oExcel.ActiveSheet.Columns(11).AutoFit
_ExcelWriteCell($oExcel, "R2 on D2", 1, 12)
    _ExcelWriteFormula($oExcel, "", 2, 12)
    _ExcelWriteFormula($oExcel, "=R3C6+(R3C3-R3C4)", 3, 12)
    _ExcelWriteFormula($oExcel, "", 4, 12)
    _ExcelWriteFormula($oExcel, "", 5, 12)
    _ExcelWriteFormula($oExcel, "", 6, 12)
    $oExcel.ActiveSheet.Columns(12).AutoFit
_ExcelWriteCell($oExcel, "R2 on D3", 1, 13)
    _ExcelWriteFormula($oExcel, "", 2, 13)
    _ExcelWriteFormula($oExcel, "", 3, 13)
    _ExcelWriteFormula($oExcel, "=R4C6+(R4C3-R4C4)", 4, 13)
    _ExcelWriteFormula($oExcel, "", 5, 13)
    _ExcelWriteFormula($oExcel, "", 6, 13)
    $oExcel.ActiveSheet.Columns(13).AutoFit
_ExcelWriteCell($oExcel, "R2 on D4", 1, 14)
    _ExcelWriteFormula($oExcel, "", 2, 14)
    _ExcelWriteFormula($oExcel, "", 3, 14)
    _ExcelWriteFormula($oExcel, "", 4, 14)
    _ExcelWriteFormula($oExcel, "=R5C6+(R5C3-R5C4)", 5, 14)
    _ExcelWriteFormula($oExcel, "", 6, 14)
    $oExcel.ActiveSheet.Columns(14).AutoFit
_ExcelWriteCell($oExcel, "R2 on D5", 1, 15)
    _ExcelWriteFormula($oExcel, "", 2, 15)
    _ExcelWriteFormula($oExcel, "", 3, 15)
    _ExcelWriteFormula($oExcel, "", 4, 15)
    _ExcelWriteFormula($oExcel, "", 5, 15)
    _ExcelWriteFormula($oExcel, "=R6C6+(R6C3-R6C4)", 6, 15)
    $oExcel.ActiveSheet.Columns(15).AutoFit
$Graph_position = "B8:K32"
    $XValueRange = "=Sheet1!R2C1:R6C1"
    Local $DataRange[5] = [4, "=Sheet1!R2C2:R6C2", "=Sheet1!R2C3:R6C3", "=Sheet1!R2C4:R6C4","=Sheet1!R2C5:R6C5"]
    Local $DataName[5] = [4, "=Sheet1!B1", "=Sheet1!C1", "=Sheet1!D1", "=Sheet1!E1"]
    Local $iWorksheet = 1
    Local $oChart1 = _XLChart_ChartCreate($oExcel, $iWorksheet, $xlStockOHLC, $Graph_position, "", $XValueRange, $DataRange, $DataName)
; Add a data series
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C11:R6C11", "=Sheet1!K1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
_XLChart_SeriesSet($oChart1.SeriesCollection(5), $xlLineMarkers)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C12:R6C12", "=Sheet1!L1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
_XLChart_SeriesSet($oChart1.SeriesCollection(6), $xlLineMarkers)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C13:R6C13", "=Sheet1!M1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
_XLChart_SeriesSet($oChart1.SeriesCollection(7), $xlLineMarkers)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C14:R6C14", "=Sheet1!N1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
_XLChart_SeriesSet($oChart1.SeriesCollection(8), $xlLineMarkers)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C15:R6C15", "=Sheet1!O1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
_XLChart_SeriesSet($oChart1.SeriesCollection(9), $xlLineMarkers)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
; Set the type of the data series
    ;_XLChart_SeriesSet($oChart1.SeriesCollection(5), $XlLine)
    ;_XLChart_SeriesSet($oChart1.SeriesCollection(5), $xlLineMarkers)  ; HOW TO make a '_' instead of a '*' marking?
    ;_XLChart_FillSet($oChart1.SeriesCollection(5).Line, -4)          ; HOW TO color the line and pick it's style?
;_XLChart_FillSet($oExcel[1].SeriesCollection(5).Line, -4)
;$oExcel[1].SeriesCollection(11).Points(5)
; Format chart
    _XLChart_FillSet($oChart1.Chartgroups(1).UpBars, -4)    ; Set the UpBars to green
    If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
    _XLChart_FillSet($oChart1.Chartgroups(1).DownBars, -3)  ; Set the DownBars to red
    If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
    _XLChart_ColumnGroupSet($oChart1.ChartGroups(1), 450)   ; Make the bars smaller (by making the gap between the bars bigger)
    If @error Then MsgBox(64, "Excel Chart Example Script", "Error " & @error & " returned by function '_XLChart_ChartCreate' on line " & @ScriptLineNumber)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Local $iFile = @ScriptDir & "TestExcelChartExport.png"
    _XLChart_ChartExport($oChart1, $iFile, "PNG", False, True)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    Return
EndFunc   ;==>Example

Share this post


Link to post
Share on other sites

4) To enhance performance and stop flickering you can disable screen updating by adding this at the top of your function

; Disable Screen updating (forced even when debugging is activated)
_XLChart_ScreenUpdateSet($oExcel, 2)
and this at the end of the function
; Enable Screen updating
_XLChart_ScreenUpdateSet($oExcel, 1)

The other "problems" are under investigation.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

1) The additonal lines you want to plot should look like the chart you linked to on Wikipedia? A horizontal line with "R1" etc. on both ends?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-07-21 - Version 1.5.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-06-27 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (NEW 2020-06-27 - Version 1.3.2.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - 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

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Langmeister
      Hi, I'm sure that this is a simple question regarding webdriver udf but my search on the forum did not result in the exact same scenario that I need. I will adapt it to my corporate needs but at first I want it to work with an example everybody can reproduce if needed.
      I navigate to https://www.daysoftheyear.com/ and want to find out what special day today is. Using the following Code returns the wanted text that today is 'shark awareness day' in the console but it is not pasted in notepad as it is not copied as it probably should be.
      #include "wd_core.au3" #include "wd_helper.au3" Local $sDesiredCapabilities, $sSession, $sID _WD_Option("Driver", "C:\Program Files (x86)\AutoIt3\chromedriver.exe") _WD_Option('Port', 9515) _WD_Option('DriverParams', '--log-path="' & @ScriptDir & '\chrome.log"') $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"goog:chromeOptions": {"w3c": true }}}}' _WD_Startup() $sSession = _WD_CreateSession($sDesiredCapabilities) _WD_Navigate($sSession, "https://www.daysoftheyear.com/?timezone_offset=nan") _WD_LoadWait($sSession) Sleep(3000) Local $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "/html/body/div[2]/header/div/div[1]/div/div[2]/h3/a") _WD_ElementAction($sSession, $sElement, 'text') ClipGet() Run("notepad.exe") Sleep(500) Send("^v") Scite returns this, therefore the text has been found but the last mile to paste it to notepad or excel does not work for me.
      __WD_Get: URL=HTTP://127.0.0.1:9515/session/b72166b774d7fefb258b3721fc1d4306/element/657e6b5d-31a9-46a8-85c4-acb7f72bf659/text __WD_Get: StatusCode=200; $iResult = 0; $sResponseText={"value":"Shark Awareness Day"}... _WD_ElementAction: {"value":"Shark Awareness Day"}... Thanks in advance! 
       
    • By Jamestay97
      Hello! Thanks you for looking at my post
      **No source code I'm sorry work related can't copy information**
      I've been using autoit for about 1 year. 
      I'm having trouble automating a click on an internet explorer web page and I've tried a lot of examples from help pages and forums already. The object I'm trying to click on isnt always in the same spot so I can't use mouse click or control click, I have tried to use the different get collection options and clickbyname, or index or get object. I'm just struggling. 
      Description of object I'm trying to click -- 
      HTML Code looks like <a ng-click.. "Click Here" it appears it's just a click able object named "click here" that opens a hidden window by running a script inside the web page. I'm not able to grab the information from the window unless it's open so I have to automate this click somehow. 
       
      I understand it's difficult to assist without having something to look at, I apologize for that sincerely and appreciate and assistance and suggestions. 
    • By GOSM
      Hey,
      as part of a larger Programm I am trying to copy the values from one cell in an Excel file to another. The code I am using is the folowing.
       
      Local $oExcel = _Excel_Open() If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) _Excel_RangeCopyPaste($oExcel.ActiveSheet, "V4:W43", "X4", False, $xlPasteValues, Default, True) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 4", "Error copying rows." & @CRLF & "@error = " & @error & ", @extended = " & @extended) MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeCopy Example 4", "2 Rows successfully pasted from the clipboard to row 1.") As I understood it the option $xlPasteValues should do the trick  but it is still copying the inserted formulas. I attached a test code and excel file.
      Thanks for the help Simon
      Copy Values Test.zip
    • By kingjacob90
      Hi
      So I am trying to click the green button, this button is not always in the same place. So fare I am trying to click it by finding the color but there is also something else with the same color on the screen (circled in yellow) that is causing issues. Is there a way to use the Title and Class of the window (can't be just the window as there are more than one with the same name).
      How does AutoIt Info get this information?

    • By Chimp
      An "improper" "unusual" use of Excel
      the script allows the creation of artistic images by simply coloring the background of the individual cells of the Excel workbook.
      Although definitely useless ... I find it quite funny though
      have a good time
      many thanks to @UEZ , @Malkey , @water
      p.s.
      I think the pixelite + color to array process can be simplified, but I used the two ready-made functions provided by UEZ and Malkey. I thank both of you (credits  and links in listing)
      p.p.s.
      strange behaviour: while excell is filling cells, if you move the mouse pointer off the excell window, the fill speed increases ... (?)

       
      ; =============================================================================================================================== ; Name ..........: Excel in art ; Description ...: This script allows the creation of artistic images in Excel from a choosed picture. ; The picture is done by simply coloring the background of the individual cells of an Excel workbook. ; Although definitely useless, I find it quite funny though ; ; Return values .: An artistic image in an Excel workbook ; Author ........: Addiego Gianni (chimp) ; Modified ......: ; Remarks .......: Many thanks to UEZ, Malkey and Water ; Related .......: ; Link ..........: ; Example .......: ; =============================================================================================================================== #include <GDIPlus.au3> #include <Excel.au3> _PixelsToCells(50) ; <-- Parameter 50 is the cumber of horizontal Excel cells to be filled MsgBox(64, "All done", "Excel art is ready") Func _PixelsToCells($iHcells = 50) ; Check application object Local $oExcel = _Excel_Open() If Not IsObj($oExcel) Then MsgBox(16, "Error", "Sorry, You need to have 'Excel' intalled") ; Choose Image File Local $sPath = FileOpenDialog("Choose Image File", @ScriptDir & "", "Images (*.gif;*.png;*.jpg;*.bmp)| All (*.*)") If $sPath = '' Then Exit MsgBox(16, "Error", "Sorry, no image was chosen") ; Create a new Excel workbook $oWorkbook = _Excel_BookNew($oExcel, 1) ; initialize GDI+ _GDIPlus_Startup() Local $hBmp = _GDIPlus_BitmapCreateFromFile($sPath) Local $iWidth = _GDIPlus_ImageGetWidth($hBmp) ; get image width ; Local $iHeight = _GDIPlus_ImageGetHeight($hBmp) ; not needed here Local $iStep = $iWidth / $iHcells ; calculate the pixelation factor Local $hBitmap_new = _GDIPlus_PixelateBitmap($hBmp, $iStep) ; pixelate the image Local $aPixelColors = _FileImageToArray($hBitmap_new) ; get pixel colors ; reduce Excel columns width Local $xx = 1, $yy = 1 For $iCol = 0 To UBound($aPixelColors, 2) - 1 Step $iStep $oWorkbook.Sheets(1).Columns($xx).ColumnWidth = 1 $xx += 1 Next ; reduce Excel rows height For $iRow = 0 To UBound($aPixelColors) - 1 Step $iStep $oWorkbook.Sheets(1).Rows($yy).RowHeight = 9 $yy += 1 Next $xx = 1 $yy = 1 For $iRow = 0 To UBound($aPixelColors) - 1 Step $iStep For $iCol = 0 To UBound($aPixelColors, 2) - 1 Step $iStep $oWorkbook.Sheets(1).Range(_Excel_ColumnToLetter($xx) & $yy).Interior.Color = Number("0x" & $aPixelColors[$iRow][$iCol]) $xx += 1 Next $yy += 1 $xx = 1 Next _GDIPlus_BitmapDispose($hBmp) _GDIPlus_Shutdown() EndFunc ;==>_PixelsToCells ; by UEZ ; https://www.autoitscript.com/forum/topic/167707-imagepixelate/?do=findComment&comment=1227509 Func _GDIPlus_PixelateBitmap($hBitmap, $iPixelate, $bSmooth = 1) Local $iWidth = _GDIPlus_ImageGetWidth($hBitmap), $iHeight = _GDIPlus_ImageGetHeight($hBitmap) Local $iNewW = Round($iWidth / $iPixelate, 0), $iNewH = Round($iHeight / $iPixelate, 0) Local $hBitmap_scaled = _GDIPlus_BitmapCreateFromScan0($iNewW, $iNewH) Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_scaled) Local $iInterpolation = 5 If $bSmooth Then $iInterpolation = $GDIP_INTERPOLATIONMODE_BILINEAR _GDIPlus_GraphicsSetInterpolationMode($hCtxt, $iInterpolation) _GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap, 0, 0, $iNewW, $iNewH) _GDIPlus_GraphicsDispose($hCtxt) Local $hBitmap_pixelated = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight) $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_pixelated) _GDIPlus_GraphicsSetInterpolationMode($hCtxt, $GDIP_INTERPOLATIONMODE_NearestNeighbor) _GDIPlus_GraphicsDrawImageRectRect($hCtxt, $hBitmap_scaled, 0, 0, $iNewW, $iNewH, -$iPixelate, -$iPixelate, $iWidth + 2 * $iPixelate, $iHeight + 2 * $iPixelate) _GDIPlus_GraphicsDispose($hCtxt) Return $hBitmap_pixelated EndFunc ;==>_GDIPlus_PixelateBitmap ; by Malkey ; https://www.autoitscript.com/forum/topic/112540-is-there-a-function-for-reading-images-into-2d-arrays/?do=findComment&comment=788472 Func _FileImageToArray($hImage) Local $Reslt, $stride, $format, $Scan0, $iIW, $iIH ; , $hImage Local $v_Buffer, $width, $height ; _GDIPlus_Startup() ; $hImage = _GDIPlus_ImageLoadFromFile($sFileName) $iIW = _GDIPlus_ImageGetWidth($hImage) $iIH = _GDIPlus_ImageGetHeight($hImage) ProgressOn("Progress Bar", "Filling a " & $iIW & " x " & $iIH & " size array.", "0 percent") $Reslt = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iIW, $iIH, $GDIP_ILMREAD, $GDIP_PXF32ARGB) ;Get the returned values of _GDIPlus_BitmapLockBits () $width = DllStructGetData($Reslt, "width") $height = DllStructGetData($Reslt, "height") $stride = DllStructGetData($Reslt, "stride") $format = DllStructGetData($Reslt, "format") $Scan0 = DllStructGetData($Reslt, "Scan0") Local $aArray[$height][$width] For $j = 0 To $iIH - 1 For $i = 0 To $iIW - 1 $v_Buffer = DllStructCreate("dword", $Scan0 + ($j * $stride) + ($i * 4)) $aArray[$j][$i] = StringRegExpReplace(Hex(DllStructGetData($v_Buffer, 1), 6), "(.{2})(.{2})(.{2})", "\3\2\1") ; To RGB format Next ProgressSet(Int(100 * $j / ($iIH)), Int(100 * $j / ($iIH)) & " percent") Next _GDIPlus_BitmapUnlockBits($hImage, $Reslt) ProgressOff() _GDIPlus_ImageDispose($hImage) Return $aArray EndFunc ;==>_FileImageToArray  
×
×
  • Create New...