2012-03-06 160 views
0
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之後/期間發生錯誤。 嘗試拋出「錯誤調用外部對象..在click..line .. saveas ..」Excel對象SaveAs,當現有文件打開時發生錯誤

- 我想告訴用戶,excel文件是開放的,因此不能被正確覆蓋。我使用了一個try catch並且拋出了一個適當的消息,但是在catch事件的消息框發生之前,PB執行錯誤R0035發生了。任何解決方案或知道excel文件是否打開的正確方法。

回答

0

您也許能夠檢查文件是否是開放的第一,在這個答案看看:

how to check if file is opened in excel using OLE (leaves excel process open)

+0

我可以做那些在Powerbuilder中使用try catch。在知道文件已打開時,真正的問題依賴於PB執行錯誤。不是之前。我也把它放在裏面嘗試,但錯誤仍然彈出。我不認爲我的用戶會忽略這一點,大聲笑 – Sid 2012-03-07 01:04:21

+0

我仍然需要一些幫助。我沒有想到這一點。我的用戶需要一個完美的Excel提取系統。感謝您的答案...! – Sid 2012-03-08 07:12:18

0

我會嘗試的PowerScript FileOpen()通話用LockReadWrite!參數來查看它是否可以打開,如果成功則立即跟隨FileClose()。 (我認爲這是對DXL解決方案科林鏈接到一個特定的PowerScript-變化。)

祝你好運,

特里

0

您將不得不關閉該選項以打入該異常的調試器,以查看IDE中的異常處理工作。有關詳細信息,請查找幫助主題「例外設置對話框」。一旦你看到它的工作,我建議你把它設置回調試器,因爲你通常想看看是什麼拋出了錯誤。

0

當文檔打開時(即使您設置鎖定寫入),用戶不能使用ole,也不能使用ole。 我的方法,我已經多次使用到現在:

  1. 檢查Excel是開放與否,使用用途可以使用APIWSH腳本在互聯網檢查應用程序打開。如果打開,請不要運行另存爲,並告訴用戶關閉excel,而不是在一段時間內運行它。
  2. 如果您的用戶運行excel,並且您的程序仍在運行活動工作簿,並且工作表應用程序將切換到由用戶打開的excel(想象它是錯誤的寫入數據)。
  3. 更改您的代碼如下

    如果Excel_Obj.ConnectToNewObject( 'excel.application')<> 0,則 消息框( 「警告」, 「可以連接到創先爭優」,stopsign!) RETURN
    末 如果

  4. 只是知識的一種技術是DDE呼叫,但不常見的今天,最複雜的。

快樂編碼來自pb開發者。

相關問題