Hi All,
My program is generating reports in excel format which contains 8 sheets. It is batch program to pick up the request from the queue, generate the reports, and send them to the user. And 4 sessions are running at the same time to process the report as many as possible as fast as possible.
A few days ago, I found that if "something" is copied in clipboard outside of the program while below program is running between "copy" and "paste", then that "something" is pasted into the final output file instead of the sheet copied in the program, which is not correct. (It means while "A" session is generating a report, other sheet generated by session("B") is pasted into the excel generated by session "A")
I could re-generate the error by copying other sheet manually while debugging after copy and before paste.
Is there any way to avoid it? Using a shared clipboard at the same time is the problem here. but I can't find solution.
Please advise. Thank you in advance.
============================================================================
// Combine the reports and create final Report
oleobject lole_excel
oleobject lole_MainWorkBook, lole_TempWorkBook
oleobject lole_sheet
Integer li_worksheet_cnt
Long ll_rtn
lole_excel = create oleobject
lole_MainWorkBook = create oleobject
lole_TempWorkBook = create oleobject
lole_sheet = create oleobject
ll_rtn = lole_excel.ConnectToNewObject("excel.application")
If ll_rtn <> 0 Then
wf_write_error_msg(is_reportid, 'Error in running MicroSoft Excel API - SPR ALL')
Destroy lole_excel
Return -1
End If
// Add Sheets
lole_MainWorkBook = lole_excel.WorkBooks.Add()
li_worksheet_cnt = lole_MainWorkBook.WorkSheets.count
Do While li_worksheet_cnt < 8
lole_MainWorkBook.WorkSheets.Add
li_worksheet_cnt = lole_MainWorkBook.WorkSheets.count
Loop
String ls_tabname[8] = {"LCL", "FCL", "FAK", "T-FCL", "T-FAK_T-LCL", "T-FAK", "T-LCL", "FAK and LCL"}
Integer li_n
// Combine Sheets into one excel file (Using ole object)
FOR li_n = 1 TO 8
lole_TempWorkBook = lole_excel.WorkBooks.Open(is_currDirectory+as_filename_tab[li_n])
lole_TempWorkBook.WorkSheets(1).Cells.Select
lole_excel.CutCopyMode = False
lole_TempWorkBook.WorkSheets(1).Cells.Copy <=========================
lole_MainWorkBook.Activate
lole_sheet = lole_MainWorkBook.WorkSheets(li_n)
lole_sheet.Name = ls_tabname[li_n]
lole_sheet.Paste <============================================
//lole_sheet.Cells.EntireColumn.AutoFit
lole_excel.CutCopyMode = False
lole_TempWorkBook.Close(False)
NEXT
.......