Hi, good day!
I'm using the OLE object connection to Excel for treat information and files. Hi have the next code implemented in one of my applications.
// More code before this
li_connect_excel = lole_excel.ConnectToObject( ls_source_file )
IF li_connect_excel < RET_OK THEN
Parent.plb_filesToLoad.deleteItem( li_file )
Parent.plb_filesToLoad.insertItem( ls_source_file, IMA_FILE_FAIL, li_file )
ls_message = wfs_errorText( li_connect_excel )
Yield()
MessageBox( 'Export Error', 'Unable to open/load spreadsheet' + NEW_LINE + ls_source_file + NEW_LINE + ls_message + NEW_LINE + 'Please check if the file is open by another process.' )
wf_checkAcceptVisible()
This.pictureName = '..\Img\bt_apply.png'
This.enabled = True
w_loadFile.pb_prior.enabled = True
wf_setTabsStatus( True )
EXIT
END IF
li_works = lole_excel.Application.workBooks.Count
FOR li_work = 1 TO li_works
ls_workBook_name = Upper( lole_excel.Application.workBooks(li_work).Name )
IF ls_workBook_name = Upper( ls_fileName[ li_file ] ) THEN
EXIT
END IF
NEXT
IF li_work > li_works THEN
Parent.plb_filesToLoad.deleteItem( li_file )
Parent.plb_filesToLoad.insertItem( ls_source_file, IMA_FILE_FAIL, li_file )
Yield()
MessageBox( 'Export Error', 'Unable to find ' + NEW_LINE + ls_source_file + NEW_LINE + 'Please check if the file is open by another process.' )
wf_checkAcceptVisible()
This.pictureName = '..\Img\bt_apply.png'
This.enabled = True
w_loadFile.pb_prior.enabled = True
wf_setTabsStatus( True )
EXIT
END IF
ll_fileLength = FileLength( ls_target_file )
IF ll_fileLength <> FILE_ERROR THEN
IF NOT FileDelete( ls_target_file ) THEN
Parent.plb_filesToLoad.deleteItem( li_file )
Parent.plb_filesToLoad.insertItem( ls_source_file, IMA_FILE_FAIL, li_file )
Yield()
MessageBox( 'Export Error', 'Unable to delete file ' + NEW_LINE + ls_target_file + NEW_LINE + 'Please check if the file is open by another process.' )
wf_checkAcceptVisible()
This.pictureName = '..\Img\bt_apply.png'
This.enabled = True
w_loadFile.pb_prior.enabled = True
wf_setTabsStatus( True )
EXIT
END IF
END IF
li_sheet_number = li_sheet_numbers[ li_file ]
IF li_sheet_number = POS_NO_POSITION THEN
li_sheet_number = POS_FIRST
END IF
FOR li_column = 1 TO li_columns[ li_file ]
lole_excel.Application.workBooks(li_work).workSheets(li_sheet_number).Columns( li_column ).Replace( Char(10), '' )
NEXT
TRY
lole_excel.Application.workBooks(li_work).workSheets(li_sheet_number).SaveAs( ls_target_file, EXCEL_xlCSV ) // Line 193
// EXCEL_xlCSV = 6
CATCH ( runtimeerror er )
MessageBox( gnvo_app.is_appName + ' Runtime Error' &
, er.GetMessage() + NEW_LINE + NEW_LINE + 'Contact with Tech department' &
, StopSign! )
wf_checkAcceptVisible()
This.pictureName = '..\Img\bt_apply.png'
This.enabled = True
w_loadFile.pb_prior.enabled = True
wf_setTabsStatus( True )
lb_exit = True
Parent.plb_filesToLoad.deleteItem( li_file )
Parent.plb_filesToLoad.insertItem( ls_target_file, IMA_FILE_FAIL, li_file )
FINALLY
lole_excel.Application.DisplayAlerts = False
lole_excel.Application.workBooks(li_work).Close()
END TRY
// More code after this
This works meanwhile some days ago, then suddenly in some machines the next error appears
All .dll Excel related are available, in fact I copied all .dll of the runtime in the same folder of the application in order to prevent an access issue, but no matter...
The Excel installed on the machines are the 365 version.
Any idea? Very appreciated if some light on the end of the tunnel appears ;)
Thanks a lot in advance for your contribution.
"You say it fails on "some" machines. Do they all have write access to the drive / folder where you're trying to do the SaveAs() to?"
Glad you solved it!
Please mark as resolved.