Jump to content
water

ExcelChart UDF - Help & Support

Recommended Posts

1) A label for e.g. R1 at one end of the line would be enough for me. If the other end could carry the value (like it does in the second chart in the Wiki-link), then that would be great.

4) Thanks for the hint.

.. and thank you for helping me out.

Best regards,

Saxo

Share this post


Link to post
Share on other sites

Hi Saxo,

I've been playing with your chart and was able to create something like this by removing the line and setting the markers size, type and data labels.

But I fear it's not exactly what you are looking for.

Could you please post a screenshot what your chart should look like? If it's confidential you can send me a PM and I'm going to delete it when no longer needed.

Have you already created such a chart by hand?

If yes, you could record a macro if you are running Excel 2010 and we then could create the AutoIt version from it.

Regards

water

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

water, this looks really nice and it is very close to the solution I pictured and had hoped for. I'm impressed that it was possible for you to build the solution within the existing Excel Chart UDF framework - but this just shows the power of the UDF you have made.

Looking at the screen shot you posted it made me realize why I see R2 below H on some of the bars (which I refered to in my point 2) some 2 posts ago). It seems that the R2 lines refer to the price axis to the right, while OHLC bars refers to the price axis on the left. The 2 price axises are not alligned - e.g. try and look at the value 69. How can they be aligned? Typically the S2 and R2 values will contain the min and max values for a bar, but the L and H can go through these values making them the min and the max values. The aligment needs to take this into acount. I guess what I'm trying to say is, that I would like to avoid that the S2 or R2 is not shown in the chart, because the price axis has been aligned to the L and H (and vice versa). I don't know if this poses any challenges in the alignment - except that I don't know how such an aligment is done.

Share this post


Link to post
Share on other sites

Hi Saxo,

To align the primary and secondary axes this works:

; Align primary and secondary Y-axis
_XLChart_AxisSet($oChart1.Axes($xlValue, 2), $oChart1.Axes($xlValue).MinimumScale, $oChart1.Axes($xlValue).MaximumScale)

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

if you like you can remove the secondary Y-axis:

; Delete the secondary Y-axis
_XLChart_ObjectDelete($oChart1.Axes($xlValue, 2))

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Thanks water - I will try that. Could you poste the code that you refered to earlier ("... by removing the line and setting the markers size, type and data labels.")? Then I will try to complete my example with your code.

Share this post


Link to post
Share on other sites

Here is the complete code I added:

; Add a data series for R2
_XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C11:R6C11", "=Sheet1!K1")
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
; Line with markers
_XLChart_SeriesSet($oChart1.SeriesCollection(5), $xlLineMarkers)
; Set the size and the type of markers
_XLChart_MarkerSet($oChart1.SeriesCollection(5), 30, $xlMarkerStyleDash)
If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
; Set data labels to display the value
_XLChart_DatalabelSet($oChart1.SeriesCollection(5))
; Set the size of the values
_XLChart_FontSet($oChart1.SeriesCollection(5).Datalabels, Default, 8)
; Set data line to invisible
_XLChart_LineSet($oChart1.SeriesCollection(5), Default, Default, False, Default, Default, $xlSheetHidden)
; Align primary and secondary Y-axis
_XLChart_AxisSet($oChart1.Axes($xlValue, 2), $oChart1.Axes($xlValue).MinimumScale, $oChart1.Axes($xlValue).MaximumScale)
; Delete the secondary Y-axis
_XLChart_ObjectDelete($oChart1.Axes($xlValue, 2))

Column K has to look like this:

R2
69,1065
69,78425
69,6425
69,3715
69,793
Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

water, this works really nice! Thank you so much for your help. I have 2 additional questions:

  • How do you set the thickness of the lines added to the chart?
  • Is it possible to call a function/method that will return the min and max value that was set on the Y-axis? In the current exampel it goes from 67 to 70.

Share this post


Link to post
Share on other sites

Hi Saxo,

Glad it gets better all the time!

  • The lines for R2 are markers on an invisible data series. Unfortunately you can only set the size of the marker. This is done with function call
    _XLChart_MarkerSet($oChart1.SeriesCollection(5), 30, $xlMarkerStyleDash)
    30 is the size and can be anywhere between 1 and 72.
  • Min and max values of the Y-Axis are already used to synchronize the primary and secondary Y-axis.
    _XLChart_AxisSet($oChart1.Axes($xlValue, 2), $oChart1.Axes($xlValue).MinimumScale, $oChart1.Axes($xlValue).MaximumScale)

    $oChart1.Axes($xlValue).MinimumScale is the minimum value of the primary Y-axis, $oChart1.Axes($xlValue).MaximumScale is the maximum value. To get the values for the secondary Y-axis replace ($xlValue ) with ($xlValue, 2)

Regards

water

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Hi water

  • Ok - no problem. Thx for the explanation.
  • Yes. The answer was already in the code - sorry for failing to see that.
For anybody interested I have pasted an updated version of the initial example. Note that D1 does not have any S2, S1, P, R1 & R2 calculated, because the values are based on the previous day's OHLC.

Once again water, thank you for your tremendous help in getting the example working just the way I wanted.

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()
    Global $iXLC_Debug = 2 ;(or = 1)
    Local $oExcel = _ExcelBookNew()
   ; Disable Screen updating (forced even when debugging is activated)
   _XLChart_ScreenUpdateSet($oExcel, 2)
    _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, "", 2, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R2C2:R2C5)/4", 3, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R3C2:R3C5)/4", 4, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R4C2:R4C5)/4", 5, 6)
    _ExcelWriteFormula($oExcel, "=SUM(R5C2:R5C5)/4", 6, 6)
    $oExcel.ActiveSheet.Columns(6).AutoFit
_ExcelWriteCell($oExcel, "S2=P-(H-L) ", 1, 7)
    _ExcelWriteFormula($oExcel, "", 2, 7)
    _ExcelWriteFormula($oExcel, "=R3C6-(R2C3-R2C4)", 3, 7)
    _ExcelWriteFormula($oExcel, "=R4C6-(R3C3-R3C4)", 4, 7)
    _ExcelWriteFormula($oExcel, "=R5C6-(R4C3-R4C4)", 5, 7)
    _ExcelWriteFormula($oExcel, "=R6C6-(R5C3-R5C4)", 6, 7)
$oExcel.ActiveSheet.Columns(7).AutoFit
_ExcelWriteCell($oExcel, "S1=2×P-H", 1, 8)
    _ExcelWriteFormula($oExcel, "", 2, 8)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R2C3", 3, 8)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R3C3", 4, 8)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R4C3", 5, 8)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R5C3", 6, 8)
$oExcel.ActiveSheet.Columns(8).AutoFit
_ExcelWriteCell($oExcel, "R1=2×P-L", 1, 9)
    _ExcelWriteFormula($oExcel, "", 2, 9)
    _ExcelWriteFormula($oExcel, "=2*R3C6-R2C4", 3, 9)
    _ExcelWriteFormula($oExcel, "=2*R4C6-R3C4", 4, 9)
    _ExcelWriteFormula($oExcel, "=2*R5C6-R4C4", 5, 9)
    _ExcelWriteFormula($oExcel, "=2*R6C6-R5C4", 6, 9)
    $oExcel.ActiveSheet.Columns(9).AutoFit
_ExcelWriteCell($oExcel, "R2=P+(H-L)", 1, 10)
    _ExcelWriteFormula($oExcel, "", 2, 10)
    _ExcelWriteFormula($oExcel, "=R3C6+(R2C3-R2C4)", 3, 10)
    _ExcelWriteFormula($oExcel, "=R4C6+(R3C3-R3C4)", 4, 10)
    _ExcelWriteFormula($oExcel, "=R5C6+(R4C3-R4C4)", 5, 10)
    _ExcelWriteFormula($oExcel, "=R6C6+(R5C3-R5C4)", 6, 10)
    $oExcel.ActiveSheet.Columns(10).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)
; 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)
    ; Add a data series for P
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C6:R6C6", "=Sheet1!F1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Line with markers
    _XLChart_SeriesSet($oChart1.SeriesCollection(5), $xlLineMarkers)
    ; Set the size and the type of markers
    _XLChart_MarkerSet($oChart1.SeriesCollection(5), 30, $xlMarkerStyleDash)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Set data labels to display the value
    _XLChart_DatalabelSet($oChart1.SeriesCollection(5))
    ; Set the size of the values
    _XLChart_FontSet($oChart1.SeriesCollection(5).Datalabels, Default, 8)
    ; Set data line to invisible
    _XLChart_LineSet($oChart1.SeriesCollection(5), Default, Default, False, Default, Default, $xlSheetHidden)
    ; Add a data series for S2
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C7:R6C7", "=Sheet1!G1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Line with markers
    _XLChart_SeriesSet($oChart1.SeriesCollection(6), $xlLineMarkers)
    ; Set the size and the type of markers
    _XLChart_MarkerSet($oChart1.SeriesCollection(6), 30, $xlMarkerStyleDash)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Set data labels to display the value
    _XLChart_DatalabelSet($oChart1.SeriesCollection(6))
    ; Set the size of the values
    _XLChart_FontSet($oChart1.SeriesCollection(6).Datalabels, Default, 8)
    ; Set data line to invisible
    _XLChart_LineSet($oChart1.SeriesCollection(6), Default, Default, False, Default, Default, $xlSheetHidden)
    ; Add a data series for S1
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C8:R6C8", "=Sheet1!H1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Line with markers
    _XLChart_SeriesSet($oChart1.SeriesCollection(7), $xlLineMarkers)
    ; Set the size and the type of markers
    _XLChart_MarkerSet($oChart1.SeriesCollection(7), 30, $xlMarkerStyleDash)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Set data labels to display the value
    _XLChart_DatalabelSet($oChart1.SeriesCollection(7))
    ; Set the size of the values
    _XLChart_FontSet($oChart1.SeriesCollection(7).Datalabels, Default, 8)
    ; Set data line to invisible
    _XLChart_LineSet($oChart1.SeriesCollection(7), Default, Default, False, Default, Default, $xlSheetHidden)
    ; Add a data series for R1
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C9:R6C9", "=Sheet1!I1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Line with markers
    _XLChart_SeriesSet($oChart1.SeriesCollection(8), $xlLineMarkers)
    ; Set the size and the type of markers
    _XLChart_MarkerSet($oChart1.SeriesCollection(8), 30, $xlMarkerStyleDash)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Set data labels to display the value
    _XLChart_DatalabelSet($oChart1.SeriesCollection(8))
    ; Set the size of the values
    _XLChart_FontSet($oChart1.SeriesCollection(8).Datalabels, Default, 8)
    ; Set data line to invisible
    _XLChart_LineSet($oChart1.SeriesCollection(8), Default, Default, False, Default, Default, $xlSheetHidden)
; Add a data series for R2
    _XLChart_SeriesAdd($oChart1, $XValueRange, "=Sheet1!R2C10:R6C10", "=Sheet1!J1")
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Line with markers
    _XLChart_SeriesSet($oChart1.SeriesCollection(9), $xlLineMarkers)
    ; Set the size and the type of markers
    _XLChart_MarkerSet($oChart1.SeriesCollection(9), 30, $xlMarkerStyleDash)
    If @error Then ConsoleWrite("Line number: " & @ScriptLineNumber & " - Error: " & @error & @CR)
    ; Set data labels to display the value
    _XLChart_DatalabelSet($oChart1.SeriesCollection(9))
    ; Set the size of the values
    _XLChart_FontSet($oChart1.SeriesCollection(9).Datalabels, Default, 8)
    ; Set data line to invisible
    _XLChart_LineSet($oChart1.SeriesCollection(9), Default, Default, False, Default, Default, $xlSheetHidden)
    ; Align primary and secondary Y-axis
    _XLChart_AxisSet($oChart1.Axes($xlValue, 2), $oChart1.Axes($xlValue).MinimumScale, $oChart1.Axes($xlValue).MaximumScale)
    ; Delete the secondary Y-axis
    _XLChart_ObjectDelete($oChart1.Axes($xlValue, 2))
    ; Enable Screen updating
    _XLChart_ScreenUpdateSet($oExcel, 1)
    ; get the values for the Y-axis
    ;MsgBox(0, "Y-axis minimum value", $oChart1.Axes($xlValue).MinimumScale)
    ;MsgBox(0, "Y-axis maximum value", $oChart1.Axes($xlValue).MaximumScale)
    ; Save chart as PNG
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 Saxo

Share this post


Link to post
Share on other sites

Glad you got it working the way you like.

That's another example that shows what can be done with our UDF.

Could you please add a screenshot of the chart to your post? A chart is worth a thousand words :oops:


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

One thing I would remove are the entries for the open, high, low, close data series in the legend. They are meaningless because there is no visible relation to any data series.

Replace

Local $DataName[5] = [4, "=Sheet1!B1", "=Sheet1!C1", "=Sheet1!D1", "=Sheet1!E1"]
with
Local $DataName[5] = [4]
and the entries will be gone. Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Version 0.3.0.0 of the UDF has been released.

Have fun testing!

For download please see my signature.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Version 0.3.1.1 of the UDF has been released.

Have fun testing!

For download please see my signature.

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

This is the "General Help and Support" thread for the ExcelChart UDF.

The UDF itself can be downloaded

So if you have any questions, suggestions or errors please post here.

I don't have the 'ExcelChartConstants.au3', Where can I download this file? thanks!

Share this post


Link to post
Share on other sites

It's part of the ZIP file you can download from page 1 of this thread.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

If anyone on this forum does use this UDF to create "non standard" charts we would like to hear about and even like to see some screenshots.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
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 (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

from me too water? ;)

Just an example of a business chart, as you know, I work for an international group and one of the KPI charts is made with the magnificent chartview UDF post-42917-0-02133600-1365617689_thumb.p

The report is generated fully automated (via a weekly scheduled job) and distributed by mail

I blurred out some text data because the thing is for internal use only. But for the example...

Cheers

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

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

    • By Taxyo
      Hi,
       
      I've been trying to automate modification of an excel file and the last thing I am stuck on is deleting all the rows where the value of Column 13 is 0. 
      I believe the error is due to me not fully understanding the syntax so this is where I'm stuck: 
       
      Func Hotkey2() Global $aUsedRange = _Excel_RangeRead($oWorkbook, 1) _ArrayDisplay($aUsedRange) For $iRow = UBound($aUsedRange) - 1 to 3 Step -1 If $aUsedRange[$iRow][13] = 0 Then _Excel_RangeDelete($oWorkbook.Worksheets(1), $aUsedRange[$iRow] & ":" & $aUsedRange[$iRow], default, 1) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeDelete Example 2", "Error deleting rows." & @CRLF & "@error = " & @error & ", @extended = " & @extended) EndIf Next EndFunc  
      While my script properly locates the row which contains value 0 in Column 13, I am not sure how to set it to the corresponding row in the excel workbook?  My above experiment gives me $vRange error and I've been toying around with it to no avail. The only way I get the Script to delete a row is by actually specifying "4:4" or "6:8" etc. 
      Where am I going wrong?
       
      Thanks! 
    • By Most
      #include <Array.au3> #include <Excel.au3> #include <MsgBoxConstants.au3> ; Create application object and open an example workbook Local $oExcel = _Excel_Open() If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\trans.xlsx") If @error Then MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error opening workbook '" & @ScriptDir & "\trans.xlsx'." & @CRLF & "@error = " & @error & ", @extended = " & @extended) _Excel_Close($oExcel) Exit EndIf ; ***************************************************************************** ; Read data from a single cell on the active sheet of the specified workbook ; ***************************************************************************** Local $sResult = _Excel_RangeRead($oWorkbook, Default, "A1") If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 1", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended) MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 1", "Data successfully read." & @CRLF & "Value of cell A1: " & $sResult) Hi, all.
      Ok, here is the deal. I have simple excel file called trans.xlsx. It's located in the directory of script. In general i don't care where to store it. 
      What i do need is to open excel file and copy one by one numbers from cells. I've tried different ways, examples. But i only get error, says: error = 3, extended = 1. I saw different posts from different years. I even tried to use simple example from manual file. But always get error.

      In general my goal get numbers one by one and post it to let's say search filed in my PC one by one. Or to notepad (but one by one, in kind of loop). 
      I've learned how to copy or show in message box some info from other apps. But with excel i'm stuck. 

      I'm able to open needed window based on "title" of excel. But i don't succeed of copying info from cells. 

      Would be appreciate for any help. 
      So, in this code i'm trying at least to read from cell A1. Doesn't matter what Sheet. 

      I use Windows 10, Excel for Office 365. 
      Thank you in advance. 
    • By AutoitMike
      Scite 3.4.4
      Win 10
      I click "Help" or press F1, there is no response
      If I use the file explorer and double click Autoit.chm or Autoit3.chm help opens.
      There is no dialog to check or uncheck "Always ask before opening this file" when clicking on these files.
       
      If you are curious as to why I dont have the latest version, I am creating a back up laptop that has a VERY extensive automation application that I have written over the past 15 years.
       
      An extremely potent, powerful, needed function has been deleted in the upgrade of Autoit in recent years that I can not do without. If my main laptop dies, which it almost did, I am in a very bad position. So I bought the exact same laptop and I am "cofiguring" it to work exactly the same as my main laptop. However, this one has been "Upgraded" to Win 10 which I hope is not the problem. 
      Thanks for any help
    • By VinMe
      Dear all, i am unable to open a xml file to excel in the "xml table format" Please help me out in where i am missing
      Local $strFileToOpen = _WinAPI_OpenFileDlg('Select xml file', @WorkingDir, 'All Files(*.*)', 1, '', '', BitOR($OFN_PATHMUSTEXIST, $OFN_FILEMUSTEXIST, $OFN_HIDEREADONLY)) Global $xlXmlLoadImportToList = 2 ; Places the contents of the XML data file in an XML table $oExcel = _Excel_Open() $oWorkbook1=$oExcel.Workbooks.OpenXML($strFileToOpen, "", $xlXmlLoadImportToList) If $strFileToOpen <> False Then     Local $oWorkbook1 = _Excel_BookOpen($oExcel, $strFileToOpen) EndIf Error i am getting is:
      ......\81e_Compare_v1.au3" (46) : ==> The requested action with this object has failed.:
      $oWorkbook1=$oExcel.Workbooks.OpenXML($strFileToOpen, "", $xlXmlLoadImportToList)
      $oWorkbook1=$oExcel.Workbooks^ ERROR
      >Exit code: 1    Time: 7.338
    • By VinMe
      Dear all, 
      I am unable to get the right result after applying the filter to the excel. please let me know on the same.
      issue: After applying the filter the output $lastRow11 not giving the right output of complete visible rows. (its breaking at row skips)
       
      ;DATA EXTRACTION FROM LOC EXCEL
      ;=============================================================================
      $oWorkbook = _Excel_BookAttach($sWorkbook)
      Local $sMSN = InputBox("MSN NO", "Enter MSN in XX FORMAT", "")
      ;~ Local $LastRow1 = ($oWorkbook.ACTIVESHEET.Range("A1").SpecialCells($xlCellTypeLastCell).Row)
      $LastRow1 = $oWorkbook.ActiveSheet.UsedRange.Rows.Count
      MsgBox(0, "lastrow1", $LastRow1)
      _Excel_FilterSet($oWorkbook, $oWorkbook.activesheet, "AF1", 32, "*" & $sMSN & "*")
      Local $oLocDS = $oWorkbook.ActiveSheet.Range("S1:S" & $LastRow1).SpecialCells($xlCellTypeVisible)
      Local $LastRow11 = $oLocDS.rows.count    ;error output
      MsgBox(0, "lastrow11", $LastRow11)
      Local $aLocDS1 = _Excel_RangeRead($oWorkbook, Default, $oLocDS)
      Local $oLocNr = $oWorkbook.ActiveSheet.Range("A1:A" & $LastRow1).SpecialCells($xlCellTypeVisible)
      Local $aLocNr1 = _Excel_RangeRead($oWorkbook, Default, $oLocNr)
      _ArrayDisplay($aLocDS1)
      _ArrayDisplay($aLocNr1)
      _ArrayTrim($aLocDS1, 6, 1)
      _ArrayTrim($aLocNr1, 6, 1)
      _ArrayTrim($aLocNr1, 6, 0)
      _ArrayDisplay($aLocDS1)
      _ArrayDisplay($aLocNr1)
×
×
  • Create New...