Pw付のexcelファイルが開きません

こんにちは。
Trialバージョンでパスワード付きのExcelファイルを開こうとした際にパスワード入力画面で処理が止まってしまいます。
ExcelApplicationScopeを使用してPassword欄にplaintextでパスワードは記載しています。
OpenApplicationでworkbookを開いてパスワード入力ダイアログをクリックしてTypeIntoでPWを入力すれば開くことはできますが、その後ExcelApplicationScopeに渡すためのWorkBookApplicationプロパティが取得できないのでReadCellを使うことができません。
できればReadCellを使いたいのでOpenApplicationではなくExcelApplicationScopeで処理したいです。
よろしくお願いいたします。

Trialのバージョンは2016.2.6274
Excel 2010
OS:Windows10 1607 です。

Hey @masami.okada

こんにちは
パスワード保護エクセル/ワークブックはアプリケーションスコープの問題を引き起こすので、ワークブックの範囲アクティビティを読んだり、プロパティでパスワードを渡したりすることができます。

詳細については、このスレッドをチェックしてください:

Excel Passwords - #7 by aksh1yadav

Regards…!!
Aksh

こんにちは
このスレッドのサンプルを使用してみましたが、やはりPW付のexcelファイルは開きません。
下記のException が出ます。
excel_password has thrown an exception

Message: File contains corrupted data.

Source: Read range

Exception Type: FileFormatException

System.IO.FileFormatException: File contains corrupted data.
at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.FindPosition(Stream archiveStream)
at MS.Internal.IO.Zip.ZipIOEndOfCentralDirectoryBlock.SeekableLoad(ZipIOBlockManager blockManager)
at MS.Internal.IO.Zip.ZipArchive…ctor(Stream archiveStream, FileMode mode, FileAccess access, Boolean streaming, Boolean ownStream)
at MS.Internal.IO.Zip.ZipArchive.OpenOnFile(String path, FileMode mode, FileAccess access, FileShare share, Boolean streaming)
at System.IO.Packaging.ZipPackage…ctor(String path, FileMode mode, FileAccess access, FileShare share, Boolean streaming)
at System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare, Boolean streaming)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(String path, Boolean readWriteMode)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable, OpenSettings openSettings)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(String path, Boolean isEditable)
at ClosedXML.Excel.XLWorkbook.LoadSheets(String fileName) in C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook_Load.cs:line 44
at ClosedXML.Excel.XLWorkbook.Load(String file) in C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook_Load.cs:line 34
at ClosedXML.Excel.XLWorkbook…ctor(String file, XLEventTracking eventTracking) in C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook.cs:line 710
at ClosedXML.Excel.XLWorkbook…ctor(String file) in C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook.cs:line 699
at UiPath.Excel.WorkbookFile…ctor(String workbookPath, String password, Boolean createNew)
at UiPath.Excel.Activities.WorkbookActivity`1.BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, Object state)
at System.Activities.AsyncCodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

ReadRangeにあるHeaderの
<ui:ReadRange AddHeaders=“True” DataTable=“[dt]” DisplayName=“Read range” sap2010:WorkflowViewState.IdRef=“ReadRange_1” Password=“UiPath” SheetName=“Sheet1” WorkbookPath=“dummy.xlsx”>
Passwordというプロパティを設定しても上記のエラーが表示され開くことができません。

あなたの優秀な人と一緒にお試しください。 スレッドの何かが欠けている。 パスワード保護されたExcelでアプリケーションスコープの代わりにワークブックの読み取り範囲を使用するだけです。

開いているアプリケーションとすべてを使用しないでください。 そのExcelファイルパスでワークブックの読み取り範囲のアクティビティを使用し、そのアクティビティのプロパティにパスワードを入力してください。 データテーブルの形式でデータを返します。

Regards…!!
AKsh

結論、ファイルを新規で作り直しExcelApplicationScopeを使用して解決しました。
ただしEXCELファイルに読み取りおよび書き込みパスワードをセットして、「読み取り専用を推奨する」にチェックを入れた状態だとロボットは停止します。
ReadRange アクティビティのプロパティにはPasswordのプロパティはありませんし、xamlを直接書き換えてもエラーとなります。
EXCELのパスワードは読み取りパスワードのみ設定した状態で正しく動作するようです。

1 Like

こんにちは。ExcelApplicationScopeについて実験しました。
UiPath Studio 2017.1.6435
Excel 2016.0.4549.1000
Excelのファイル形式 xlsx
上記環境で、ExcelApplicationScopeのプロパティにPasswordを設定しても無視され、Excelのパスワード入力のダイアログが表示しました。入力すると続きが正しく実行されました。
読み取り専用パスワードだとダイアログが表示されず期待通り実行できました。
バグだと思います。

はい、これはすでに数ヶ月前のフォーラムで議論されています。
これは、ワークブックの活動性で機能します。

Regards…!!
Aksh

1 Like

tangoさん こんにちは。
ExcelApplicationScopeのプロパティにはPasswordの欄が1つしか存在しないことから「読み取りパスワードだけ設定された場合」を想定して作られているアクティビティです。
私が試したように書き込みパスワードと読み取りパスワードを両方設定した場合などはダイアログが表示され、ExcelApplicationScopeアクティビティはこれをハンドリングできない仕様になっています。

OpenApplication アクティビティでExcelを開いてパスワード入力ダイアログをClickアクティビティなどでハンドリングしてあげるのが現時点での正しいやり方だと認識しています。

1 Like