Excel_Obj = CREATE OleObject
Excel_Obj.ConnectToNewObject( 'excel.application' )
Excel_Obj.Workbooks.Add
Excel_Obj.Application.ActiveWorkbook.WorkSheets.Add
Excel_Sheet = Excel_Obj.Application.ActiveWorkbook.WorkSheets[1]
//EXAMPLE
Excel_Sheet.Cells[1,1] = 45
Excel_Obj.Application.ActiveWorkbook.SaveAs(ls_file,56) //csv
//where ls_file = the Opened File
在saveas之后/期间发生错误。 尝试抓住抛出“错误调用外部对象..在点击......线..保存..”
- 我想向用户说明excel文件是打开的,因此无法正确覆盖。我使用了try catch并抛出了正确的消息但是在catch事件的消息框发生之前,发生了PB执行错误R0035。任何解决方案或正确的方法来了解excel文件是否已打开。
答案 0 :(得分:0)
您可以先检查文件是否打开,看看这个答案:
how to check if file is opened in excel using OLE (leaves excel process open)
答案 1 :(得分:0)
我尝试使用LockReadWrite进行PowerScript FileOpen ()
调用!参数,以查看是否可以打开,如果成功则立即跟FileClose ()
。 (我认为这是与Colin相关联的DXL解决方案的特定于PowerScript的变体。)
特里
答案 2 :(得分:0)
您是否尝试过类似的方法?
使用Win32 API: http://www.rgagnon.com/pbdetails/pb-0030.html
使用PB函数fileopen()和(默认)独占权限集: http://www.tek-tips.com/viewthread.cfm?qid=1610670
换句话说,看看在连接到Excel或制作CSV之前是否可以独占打开文件?
答案 3 :(得分:0)
您必须关闭该选项才能进入该异常的调试器,以查看IDE中的异常处理工作。有关详细信息,请查找帮助主题“异常设置对话框”。一旦你看到它工作,我建议你重新设置它以进入调试器,因为你通常想看看是什么引起了错误。
答案 4 :(得分:0)
当用户打开文档(即使您设置锁定写入)而不是应用程序时,您不能使用ole。 我的方法,到目前为止我已经使用过很多次了:
更改您的代码如下
如果Excel_Obj.ConnectToNewObject(' excel.application')<> 0然后
messagebox("警告","可以连接到excel",停止!)
返回
如果
仅仅是为了知识,另一种技术是DDE调用,但今天不常见且最复杂。
快乐编码来自pb开发人员。