2017-04-15 12 views
-1

カスタマイズされたExcelレポートを更新するUFT内にWeb自動化フレームワークがあります。コードのレポート編集中に、私はprocess/vbaオブジェクトの処理に関連する奇妙な問題に直面しています。私はこのコードを関数ライブラリ(.qfl)に関数の中に格納しており、何度も呼び出されます。問題は、UFTの実行がフリーズし、EXCEL.exeの実行中のプロセスが表示されることがあることです。手動でプロセスを終了するまで何時間も画面上に何も起こりません。UFT:実行中のExcelプロセス実行中フリーズ

On error resume next 
Dim objExcel, objWorkbook, objWorkSheet 
Set objExcel = createobject("excel.application") 
objExcel.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.Open("SheetLocation") 
Set objWorkSheet = objWorkbook.WorkSheets("SheetName") 
intStepRow = objWorkSheet.Cells.Find("WC_01").Row 
objWorkSheet.Cells(intStepRow, 7).Value = "SomeValue" 
objWorkSheet.Cells(intStepRow, 8).Value = "SomeValue" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close True 
objExcel.Quit()  
Set objWorkSheet = Nothing 
Set objWorkbook = Nothing 
Set objExcel = Nothing  
On error goto 0 

プロセスを終了するために関数の最後にコードを入れてみましたが、運はありません。私はまた、excel.Visible.Displaytrueの設定を試してみましたが、どこが間違っているのか分かりませんが、何も見えません。私もエラー処理を削除しようとしたが、同じ、不運。

は編集:

各ラインのログを有効にした後、私はラインの下に

Set objWorkbook = objExcel.Workbooks.Open("SheetLocation") 

お時間を事前に感謝と提案:)代わりに私が見つけ

+0

あなたは潜在的に 'Find'ステップで発生したエラーの状況を持っています。検索している値が存在しない場合、次の2つの手順でコードが停止します。あなたはコードをステップアップしようとしましたか?そして、あなたが実行しているエラーを隠すつもりであるので、 'On Error Resume Next'を削除してください。 – Dave

+0

はい、私はエラーで次の再開を削除しようとしましたが、運はありません。 'Find'メソッドは常にシートに存在する値を取得します。コードの停止はランダムに行われます。この値はどれでも発生します。 – yudi2312

+1

ロギングステップを挿入し、コードの各行を追跡し、成功すればログに記録します。そうすることで、次に停止するときに、正確にどこに到達したのかという詳細がわかります。それは、どのようなステップが間違っていたかを教えてくれるので、実際の問題に集中することができます。現在、問題を解決する必要があるかどうかはわかりません。 – Dave

答えて

-1

を実行を凍結されていることがわかります興味深いですが、オブジェクトを実体化した後にobjExcel.quit()を使ってみることができますか?つまり、wroksheet、workbook、excel = nothingを設定した後です。例:

Set objWorkSheet = Nothing Set objWorkbook = Nothing Set objExcel = Nothing objExcel.Quit()

+0

私の所見では、 'objExcel.Quit()'は何の問題も引き起こしていません。 objExcel.Workbooks.Openに問題があります。しかし、私はあなたのアプローチにも試してみます。 – yudi2312

+0

はい。 Excelの複数のインスタンスを作成することができますが、同じワークブックにはアクセスできないため、Workbook.Openによって問題が作成されます。したがって、このブックの以前のプロセスが終了していない場合は、再度アクセスすると問題が発生します。 それは私があなたが問題を解決する可能性がありますExcelの終了を処理すると思います理由。 – Pranav

+0

'objExcel.Quit()'の後にExcelのプロセスを強制終了すると、それが助けになると思います。しかし、大丈夫、私はこの方法で試してみます。 – yudi2312

関連する問題