0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerAutomateDesktopでExcel, PowerPoint, Wordにパスワードを設定する方法

Last updated at Posted at 2024-11-11

1. 初めに

2024年11月時点(バージョン:2.49.00202.24289)のPowerAutomateDesktopではExcel, PowerPoint, Wordにパスワードを直接設定するフローがありません。

ファイル操作で自動的にこの3種類のファイルにパスワード設定したい場合は、「VBScriptの実行」を利用します。

image.png

「実行するVBScript」に書き込む内容は2.から記載していきます。
設定したいファイル種別ごとにこのフローを追加すればパスワードを付与することができます。
image.png

2.「実行するVBScript」に記入する内容

Excel

Excelの場合
Dim objExcel
Dim objWorkbook

' Excelアプリケーションを作成
Set objExcel = CreateObject("Excel.Application")

'警告を無効化
objExcel.DisplayAlerts = False

' ワークブックを開く
Set objWorkbook = objExcel.Workbooks.Open("<対象のExcelのファイルパス>")

' パスワードを設定
objWorkbook.Password = "<パスワード>"

' ワークブックを保存
objWorkbook.SaveAs "<対象のExcelのファイルパス>"

'警告を有効化
objExcel.DisplayAlerts = Ture

' ワークブックを閉じる
objWorkbook.Close

' Excelアプリケーションを終了
objExcel.Quit

' オブジェクトを解放
Set objWorkbook = Nothing
Set objExcel = Nothing

PowerPoint

PowerPointの場合
Dim objPowerPoint
Dim objPresentation

' PowerPointアプリケーションを作成
Set objPowerPoint = CreateObject("PowerPoint.Application")

' プレゼンテーションを開く
Set objPresentation = objPowerPoint.Presentations.Open("<対象のExcelのファイルパス>")

' パスワードを設定
objPresentation.Password = "<パスワード>"

' プレゼンテーションを保存
objPresentation.SaveAs "<対象のExcelのファイルパス>"

' プレゼンテーションを閉じる
objPresentation.Close

' PowerPointアプリケーションを終了
objPowerPoint.Quit

' オブジェクトを解放
Set objPresentation = Nothing
Set objPowerPoint = Nothing

Word

Wordの場合
Dim objWord
Dim objDoc

' Wordアプリケーションを作成
Set objWord = CreateObject("Word.Application")

' ドキュメントを開く
Set objDoc = objWord.Documents.Open("<対象のExcelのファイルパス>")

' パスワードを設定
objDoc.Password = "<パスワード>"

' ドキュメントを保存
objDoc.SaveAs "<対象のExcelのファイルパス>"

' ドキュメントを閉じる
objDoc.Close

' Wordアプリケーションを終了
objWord.Quit

' オブジェクトを解放
Set objDoc = Nothing
Set objWord = Nothing

3. 変数の設定と利用する際の注意点

変数の設定

変数を設定する場合は<対象のExcelのファイルパス>と<パスワード>に設定すれば、複数ファイルのパスワードを設定する自動化できます。

(変数の設定例)
image.png

利用する際の注意点

2. に記載した3つのVBScriptを実行する際は、非同期設定のフォルダ上のファイルを対象に実行してください。
OneDrive上やOneDriveに同期設定しているデスクトップ/ドキュメント/ピクチャーでこのフローを動かそうとすると正常にパスワード設定できないことが稀に発生します。
必ず、非同期のローカルフォルダ上に保存しているファイルを対象に実行してください。

また、パスワード設定する際は秘匿化をしましょう。
下記の記事を参考にしてください。

4.作成フロー例

下記にテストフローとしてExcelファイル(今回は拡張子xlsxに限定)にパスワード設定するフローを用意しました。
PowerAutoamteDesktopにペーストし実行してみてください。
フロー作成の際にイメージができればと思います。
(もし、バージョンが2.49.00202.24289以上でフロー作成時にエラーが出る場合はコメントお願いします。最新verに対応したフローへ修正いたします。)

テストフロー
Display.SelectFileDialog.SelectFile Title: $'''ファイルの選択''' FileFilter: $'''*.xlsx''' IsTopMost: False CheckIfFileExists: False SelectedFile=> SelectedFile ButtonPressed=> ButtonPressed
Display.InputDialog Title: $'''パスワード設定''' Message: $'''設定するパスワードを入力してください。''' InputType: Display.InputType.SingleLine IsTopMost: False UserInput=> UserInput
@@copilotGeneratedAction: 'False'
Scripting.RunVBScript.RunVBScript VBScriptCode: $'''Dim objExcel
Dim objWorkbook

\' Excelアプリケーションを作成
Set objExcel = CreateObject(\"Excel.Application\")

\'警告を無効化
objExcel.DisplayAlerts = False

\' ワークブックを開く
Set objWorkbook = objExcel.Workbooks.Open(\"%SelectedFile%\")

\' パスワードを設定
objWorkbook.Password = \"%UserInput%\"

\' ワークブックを保存
objWorkbook.SaveAs \"%SelectedFile%\"

\'警告を有効化
objExcel.DisplayAlerts = Ture

\' ワークブックを閉じる
objWorkbook.Close

\' Excelアプリケーションを終了
objExcel.Quit

\' オブジェクトを解放
Set objWorkbook = Nothing
Set objExcel = Nothing''' ScriptOutput=> VBScriptOutput ScriptError=> ScriptError
Display.ShowMessageDialog.ShowMessage Title: $'''完了通知''' Message: $'''パスワード設定が完了しました。
実際にパスワード設定できているか確認してください。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False

フロー作成時PowerAutoamteDesktopでの表示↓
image.png

何か不明点ありましたらコメントお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?