2012-03-06 16 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 .."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

+0

私はまだこれについていくつかの助けが必要です。私はこれを理解しなかった。私のユーザーは完全なエクセル抽出システムを望んでいます。答えをありがとう...! – Sid

0

私はLockReadWriteとのPowerScript FileOpen()通話を試してみました!パラメータを開き、それが成功した場合はすぐにFileClose()が続きます。 (私はこれはコリンがにリンクされDXLソリューションのPowerScriptの固有の変化だと思います。)

幸運、

テリー

0

IDEで例外処理を確認するには、その例外のデバッガに侵入するオプションをオフにする必要があります。詳細については、ヘルプトピック「例外設定ダイアログボックス」を参照してください。一旦それが動作しているのを見たら、あなたは通常、エラーを投げたものを見たいと思っていたので、デバッガに侵入するように戻すように設定することをお勧めします。

0

文書が開いている(ロック書き込みを設定している)場合でも、アプリケーションではなくユーザーが使用することはできません。私のアプローチは、私は今まで何度も使用している :

  1. チェックは、Excelが開いているかどうか、使用の使用が開かれたアプリを確認するために、インターネットでAPIまたはWSHスクリプトを使用することができます。開かれた場合は、別名で保存して実行しないでください。ユーザーにExcelを終了し、しばらく実行しないように伝えます。
  2. ユーザーがExcelを実行していて、プログラムがまだアクティブブックを実行していて、ワークシートアプリケーションがユーザーによって開かれたExcelに切り替わる場合(書き込まれたデータが間違っていると想像してください)
  3. はExcel_Obj.ConnectToNewObject( 'まずExcel.Application')<> 0が続い メッセージボックスが( "警告"、 "エクセルに接続することができました" 場合、

    以下のようにコードを変更しstopsign

    !) RETURN
    エンド

  4. だけの知識のために別の技術は、DDEコールではなく、一般的な今日、最も複雑な場合。

ハッピーコーディングpb developerから。

関連する問題