カスタマイズされた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
と.Display
〜true
の設定を試してみましたが、どこが間違っているのか分かりませんが、何も見えません。私もエラー処理を削除しようとしたが、同じ、不運。
は編集:
各ラインのログを有効にした後、私はラインの下に
Set objWorkbook = objExcel.Workbooks.Open("SheetLocation")
お時間を事前に感謝と提案:)代わりに私が見つけ
あなたは潜在的に 'Find'ステップで発生したエラーの状況を持っています。検索している値が存在しない場合、次の2つの手順でコードが停止します。あなたはコードをステップアップしようとしましたか?そして、あなたが実行しているエラーを隠すつもりであるので、 'On Error Resume Next'を削除してください。 – Dave
はい、私はエラーで次の再開を削除しようとしましたが、運はありません。 'Find'メソッドは常にシートに存在する値を取得します。コードの停止はランダムに行われます。この値はどれでも発生します。 – yudi2312
ロギングステップを挿入し、コードの各行を追跡し、成功すればログに記録します。そうすることで、次に停止するときに、正確にどこに到達したのかという詳細がわかります。それは、どのようなステップが間違っていたかを教えてくれるので、実際の問題に集中することができます。現在、問題を解決する必要があるかどうかはわかりません。 – Dave