エクセルでセルに書き込めない。

お世話になります。

エクセルで以下のような作業を行いたいのですが、エラーがでてしまいます。
作業内容:①Aという文字を書き込むセルを見つける→②見つけたセルにAを書き込む→③Bという文字を書き込むセルを見つける→④見つけたセルにBという文字を書き込む→以下繰り返し
エラー内容:
メッセージ: ブック: C:\Users\rentaladmin\Desktop\休憩表2021.xlsx において メモ を現在のシートに設定できませんでした。元のエラー メッセージ: HRESULT からの例外:0x800401A8
例外の型: UiPath.Excel.ExcelException

上記の④のところでエラーが出てしまいます。
どのように対処すればよいでしょうか。

こんにちは

もし可能でしたら作成されたワークフローのファイルまたはスクリーンショットを添付できませんでしょうか?例えばExcel Application Scopeのハンドリングあたりが怪しそうに思えますが、上記だけでは判断がつきにくいですので。

自動保存にチェックがありませんか?セル値が変わるたびに、保存され、その最中に再度セルの書き込みが動いて。。。

@HANACCHI
返信いただきありがとうございます。
エクセルの自動保存を確認しましたが、オフになっていました。

あと何かできることはありますでしょうか。。

返信いただきありがとうございます。
以下、スクリーンショットです。情報少なく申し訳ありません。
ブレークポイントを付けているところでエラーが出てしまいます。
A列に月日を書き込みセルのアクティビティでは、全アクティビティで取得した選択範囲に月日をかきこんでいます。

@Yoichi さんへの返信の画像をみました。
書込み位置を求めるのに苦労している事が伺いしれますね。

ここを省力化できれば該当エラーは発生しないようになりますね。

そのためには、「範囲を読み込み」アクティビティでシート全体をDataTable型として捉え、検索出来た値のある行列を、セルアドレスと解釈させて、「セルで書込み」なんてするといいかも。

1 Like

こんにちは

取り急ぎ原因の切り分けのために
セル書き込みの手前に2-3秒程度の待機アクティビティを配置して、現象が解消するか確認してみてもらえませんか?

2 Likes

やってみます!最後のセルを取ってこれるアクティビティもあったような気がするので、それで取得してみます。ありがとうございます。
上記とは別の話になりますが、試しに別の端末で実行してみると、エラーが出ず問題なく動きました。エクセル側の設定でしょうか。。

2-10秒の待機アクティビティを入れてみましたが、いずれも同じエラーで止まってしまいました。
別の端末で実行するとエラーが出ず、問題なく動いたのですが、エクセル側の設定でしょうか。

こんにちは

ありがとうございます。
現在エラー発生個所に、ブレイクポイントを設定していると思いますが、デバッグ実行した際に
直前の選択範囲を取得アクティビティの結果は、想定のものと同様でしょうか?

別端末で正常に動作するということで、タイミングの問題のケースが多いかと思います。
もし範囲選択を取得アクティビティの結果が想定と異なるなら、待機は選択範囲を取得の前の
方が良いかもしれません。

2 Likes

そこを乗り越えるのもuipatherの楽しみでもあります

返信になっていない^_^

1 Like

デバッグを行い変数の中身を確認しましたが、想定のものと同様になっていました。
色々な箇所に待機アクティビティ(5-30秒)を入れてみましたが、改善しませんでした。とても不思議です。。アクティビティの順番も可能な範囲で変えたりしていますが、改善しません。

開発者はUiPatherと呼ばれるのですね、初めて知りました!
期限があるときは焦りますが、考えて解決したときは楽しいです。

1 Like

こんにちは

ありがとうございます。ホットキー操作が怪しいとにらんだのですが、違うかもしれませんね。
これの切り分けのために
範囲を選択~ホットキー操作~選択範囲を取得
の一連の操作を、一旦無効にして、代入アクティビティで、仮に想定する値を変数にセットしてみて
実行すると、どのようになりますでしょうか?
もしこれで事象が発生するようでしたら、無効にした範囲とは無関係の事象ということになります。

あるいは、今回のシートは、シート保護などが有効になっていませんでしょうか?
特定のバージョンでシート保護関連のバグがあるようなので、これが疑わしければ
Excelのアクティビティを最新のものにアップデートすることも試してみ良いかもしれません。

1 Like

返信お待ちしている間にいろいろ試していたのですが、以下の方法でエラーなく進めることができました。
エクセルアプリケーションスコープ内の処理の最後にブックを閉じるアクティビティを追加しました。

セルを見つける→セルに書き込み→ブックを閉じる→セルを見つける→セルに書き込み→ブックを閉じる→繰り返し・・

先ほどまではブックを閉じる前(エクセルアプリケーションスコープが終わる前?)に次のループが始まっていたようです。
Yoichi様のおっしゃる通り、タイミングが問題だったのかなと思います。

色々とご教示いただきありがとうございました!

こんにちは

状況了解しました。

本来閉じる必要のないファイルを繰り返し開く・閉じるしていたのであれば
以下のように実装すると、継続して書き込みが可能になります、

まず繰り返しの前にいったんエクセルアプリケーションスコープで対象ファイルを開きます。
その時に、出力-ブックに変数を設定します。(Ctrl+Kで生成できます)

繰り返しの中のエクセルアプリケーションスコープでは、ファイル名を指定するのではなく
既存のブックとして、先ほど生成した変数をセットします。

ループ終了後、ブックを閉じるで先ほどの変数を設定して、これを閉じます。

なお自動保存がONですと、パフォーマンスに影響が出やすいので
OFFにした上で、適当な場所に、ブックを保存アクティビティを配置すると
良いかもしれません。

1 Like

詳しい説明ありがとうございます!
エクセルアプリケーションスコープの出力ブックにこのような使い方があるとは知りませんでした。ほかのところにも応用できそうなので、これから使っていきます。
自動保存も基本はオフにするようにしてエクセルの自動化を行います。
多くのことご教示いただきありがとうございました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.