10-31-2023 03:04 AM - edited 10-31-2023 03:06 AM
Hi,
I am using report template and updating it through the script as per the requirement. The report template composed of 22 pages, based on condition some pages are need to be deleted before updating and exporting to PDF file.
I am doing of lot of updates in every page through script and did a "report.refresh" at the end of script before generating PDF file. I got the below error in the refresh line,
DEBUG: Since i used many functions and doing lot of updates, I inserted "report.refresh" command in several places to identify exactly where the error started. I found it was occurring while deleting the report worksheet, find below sample code,
After deleted the sheets as per condition, when it executes the "report.refresh"[ colored in red], its started throwing error: "-2147418113(GDI+ Error) The method performed an arithmetic operation that produces a numeric overflow". No error in the "report.refresh" command used inside for loop.
All the lines executed followed this for loop are started throwing " -2147418113Access violation at address 0000000000FB0617 in module 'DIAdem.exe'. Read of address 0000000000000023" error.
Any suggestions to overcome this error. What the root cause for this?
Note: I am running DIAdem in silent mode [invisible mode]. Using DIAdem 2023 version. I am not getting any error while running same script by keeping DIAdem in visible mode, but would like to do it in silent mode.
Info: If I comment the report sheet deletion for loop function, then my complete scripts runs fine without any error.
11-13-2023 08:53 AM
Hi Durai26,
It is not recommended to delete sheets within a "for each" loop. Instead, try to run through the sheets backwards to avoid subsequent errors.
dim i, sheet_name, msg
for i = Report.Sheets.Count to 1 step -1
sheet_name = Report.Sheets(i).Name
if sheet_name = "A1" or sheet_name = "B1" or sheet_name = "R1" then
else
msg = msg & "Sheet deleted: " & sheet_name & vbCrLf
Report.Sheets.Remove(sheet_name)
end if
next
print(msg)
I hope it helps to avoid the GDI+ error. Good luck with it :-).