8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ボタンひとつでお仕事革命!Power Automateで仕事をサボ…じゃなくて効率化!

Last updated at Posted at 2024-09-10

この記事では、Power Automate Desktop(PAD)を使って、データの取得から送信までの自動化フローを構築する手順を解説します。最初は、同僚たちにシンプルなフローを試してもらい、そのフィードバックを元に改良を重ね、最終的にExcelの処理も加えました。

完成版のPADの動作動画

PADでやろうとしたこと(概略図)

PAD フローチャート.jpg

フローのソースコード

🐶クリックしてフローコードを表示🐶
WebAutomation.LaunchEdge.LaunchEdge Url: `` WindowState: WebAutomation.BrowserWindowState.Maximized ClearCache: False ClearCookies: False WaitForPageToLoadTimeout: 60 Timeout: 60 BrowserInstance=> Browser
UIAutomation.Click.Click Element: appmask['Window \'ログイン - 職場 - Microsoft​ Edge\'']['Edit \'cssLoginTableTextBox\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: `` DelayBetweenKeystrokes: 3 SendTextAsHardwareKeys: False
UIAutomation.Click.Click Element: appmask['Window \'ログイン - 職場 - \'']['Edit \'cssLoginTableTextBox\' 2'] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: `` DelayBetweenKeystrokes: 3 SendTextAsHardwareKeys: False
UIAutomation.Click.Click Element: appmask['Window \'ログイン - 職場 - Microsoft​ Edge\'']['Button \'ログイン\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.Click.Click Element: appmask['Window \' システム - 職場 - Microsoft​ Edge\'']['Button \'送信\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.Click.Click Element: appmask['Window \' システム - 職場 - Microsoft​ Edge\'']['Hyperlink \'_日次/月次\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.Click.Click Element: appmask['Window \' システム - 職場 - Microsoft​ Edge\'']['Button \'検索\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
WAIT 5
UIAutomation.Click.Click Element: appmask['Window \'システム - 職場 - Microsoft​ Edge\'']['Button \'CSV出力\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
WAIT 5
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\331824\\Downloads\\I_TenpoJisseki.csv''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SelectCellsFromExcel.SelectCells Instance: ExcelInstance StartColumn: $'''A''' StartRow: 1 EndColumn: $'''Z''' EndRow: 300
Excel.CopyCellsFromExcel.Copy Instance: ExcelInstance
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\\\Desktop\\店舗配信用\\店舗配信用.xlsm''' Visible: True ReadOnly: False Instance=> ExcelInstance2
Excel.PasteCellsToExcel.PasteAt Instance: ExcelInstance2 Column: $'''A''' Row: 1
Excel.ResizeColumnsOrRows.AutofitAllColumns Instance: ExcelInstance2
Excel.ResizeColumnsOrRows.AutofitAllRows Instance: ExcelInstance2
Excel.RunMacro Instance: ExcelInstance2 Macro: $'''色の変更と行削除_枠追加_ウィンドウ固定_列も固定'''
Excel.SaveExcel.SaveAs Instance: ExcelInstance2 DocumentFormat: Excel.ExcelFormat.FromExtension DocumentPath: $'''C:\\Users\\331824\\Desktop\\店舗配信用\\東.xlsm'''
Excel.CloseExcel.Close Instance: ExcelInstance2
Outlook.Launch Instance=> OutlookInstance
Outlook.SendEmailThroughOutlook.SendEmail Instance: OutlookInstance Account: `` SendTo: `` Subject: $'''''' Body: $'''


''' IsBodyHtml: False IsDraft: False Attachments: $'''C:\\Users\\331824\\Desktop\\店舗配信用\\東.xlsm'''
Excel.CloseExcel.Close Instance: ExcelInstance
File.Move Files: $'''C:\\Users\\331824\\Downloads\\I_TenpoJisseki.csv''' Destination: $'''C:\\Users\\331824\\Desktop\\店舗配信用''' IfFileExists: File.IfExists.DoNothing MovedFiles=> MovedFiles
UIAutomation.Click.Click Element: appmask['Window \'システム - 職場 - Microsoft​ Edge\'']['Button \'ログアウト\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0

なぜPADを導入したのか

現行業務の課題や問題点.jpg

職場では「データ処理の時間短縮」が課題でした。そこで、Power Automate Desktop(PAD)を導入。社内PCに初期インストールされ、日本語対応も充実しているので手軽に使えます。

初めに複雑なフローを提示しましたが、同僚たちの興味は薄かったため、自動ログインやデータ保存などのシンプルなフローから試してもらい、徐々に改良を重ねました。

使用したツール

  • Power Automate Desktop (PAD): 自動化フローを作成
  • Excel: データ処理・編集のために使用
  • Visual Basic for Applications (VBA) : Excelでマクロを使用して処理を自動化

基本フローの手順

最初は次の手順で基本フローを作成しました(この時点ではExcelでのデータ処理は含んでいません)。

  1. 自動ログイン: UI要素をクリックし、IDとパスワードを入力。
  2. データ保存: 指定したファイルのダウンロードと保存。
  3. メール送信: 保存されたファイルを自動でメール送信。

まずは自動でログイン!

最初1.jpg
最初2.jpg

UI要素をクリックで、任意のUIをクリックできるようになります。

自動でデータを取得!

コメント 2024-09-10 103620.png

UI要素をクリックで指定したファイルのダウンロードを開始します。

ダウンロードしたファイルを選択してみよう!

スクリーンショット 2024-09-09 154716.png

ダウンロードしたファイルをメールで送ろう!

スクリーンショット 2024-09-09 160029.png
スクリーンショット 2024-09-09 160433.png

ここまでフローを設定すると、自動でメールまで送ってくれるようになります。

最後に、ファイルがダウンロードフォルダに保存されたままなので、移動させます。スクリーンショット 2024-09-09 161421.png
これで、データ取得からメール送信までが自動化されました。

職場で使ってみよう!

作成したPADフローを職場の仲間に試してもらいました。事前に以下のような説明を行いました。

説明内容

  • 課題: データ処理に時間がかかり、業務の効率化が求められている
  • 目的: Power Automate Desktop(PAD)を使用して、データ処理の時間短縮と自動化を図り、チーム全体がデジタルツールに慣れてもらう
  • 目標: チーム全体の業務効率を向上させるための仕組みを確立する

その中でもPADに興味を示してくれた2名(上司と同僚)からフィードバックを頂きました。

上司と同僚の紹介

上司(統括リーダー 40歳 男)

  • 関東ブロックを統括
  • 資料作成やデータ処理に多くの時間を費やしている
  • 店舗の巡回ができないのが課題
  • PADについては知識があるが、使用は今回が初めて

同僚(複数店舗を巡回している薬剤師 35歳 男)

  • 複数店舗を巡回
  • デジタルツールに詳しくない
  • 主な業務は店舗教育
  • データ編集に時間がかかり、業務が滞ることがある

使ってもらった感想(フィードバック)

フィードバックを受ける際の質問内容

  • 業務のどの部分で役立つと感じましたか?

  • 完全自動化への抵抗感はありましたか?

  • 他に改善できるポイントはありますか?

  • 自分でもこのツールを使ってみたいと思いましたか?

フィードバック内容

上司(統括リーダー 40歳 男)

  • 自動ログイン: ワンクリックで簡単にログインできることを評価
  • 完全自動化: 完全自動化を推奨
  • ファイルの見やすさ: 視覚的にデータを見やすくする改善点を提案

同僚(複数店舗を巡回している薬剤師 35歳 男)

  • 教育的指導の懸念: 時間を割けないため、ファイルの見やすさを強調
  • 自動化のメリット: 他の仕事をしながらの自動処理を評価
  • フローの長さ: フローが長すぎることへの懸念を示す

フィードバックに基づく改善点

  • 完全自動化: 最初は手動操作を含めて部分自動化していたが、フィードバックに基づき最終的に完全自動化に移行した。
  • ファイルの見やすさ: ダウンロードしたファイルの自動加工機能を追加し、データを見やすく整理。
  • フローの簡潔化: 操作が負担にならないように、フローを短くする工夫をした。

フィードバックを基にした改善

VBAを使ってデータを見やすくしよう!

ダウンロードしたファイルが見づらかったため、VBAで自動整形機能を追加しました。
ついでに、「ダイアログでのファイル選択」から、自動でファイルを選択するように設定します。
改良1 (2).png
改良2 (2).png

いいかんじ.png
予め設定したマクロがPADで自動化されます。

VBAマクロコードの例

以下は、必要なエリア部分を抽出し、特定店舗のセルに色を変更し、ウィンドウ枠を固定するVBAコードです。

🐶クリックしてVBAコードを表示🐶 ```vba Sub 色の変更と行削除_枠追加_ウィンドウ固定_列も固定() Dim lastRow As Long Dim lastCol As Long Dim i As Long Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' 実際のシート名に変更
' 最終行と最終列を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

' 末尾からループする(逆方向で行を削除)
' 1行目は消さないので、2行目以降をチェック
For i = lastRow To 2 Step -1
    ' A列のセルに「」が含まれていない場合、その行を削除
    If InStr(ws.Cells(i, 1).Value, "") = 0 Then
        ws.Rows(i).Delete
    End If
Next i

' 最終行の再取得(行削除後に変更される可能性があるため)
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

' 色の変更:B列に「」「」「」が含まれるセルの行の色を変更
' 1行目は消さないので、2行目以降をチェック
For i = 2 To lastRow
    If InStr(ws.Cells(i, 2).Value, "") > 0 Or _
       InStr(ws.Cells(i, 2).Value, "") > 0 Or _
       InStr(ws.Cells(i, 2).Value, "") > 0 Or _
       InStr(ws.Cells(i, 2).Value, "") > 0 Then
        ws.Range("A" & i & ":R" & i).Interior.Color = RGB(255, 255, 0) ' 黄色に変更
    End If
Next i

' 1行目に太枠を設定
ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol)).Borders.LineStyle = xlContinuous
ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol)).Borders.Weight = xlThick ' 太枠

' 2行目以降に普通の枠を設定
For i = 2 To lastRow
    If Application.WorksheetFunction.CountA(ws.Rows(i)) > 0 Then ' データがある行だけ枠を適用
        ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Borders.LineStyle = xlContinuous
        ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Borders.Weight = xlThin ' 普通の太さ
    End If
Next i

' 1行目とB列のウィンドウ枠の固定
ws.Cells(2, 3).Select ' B列と2行目を基準にしてウィンドウ枠を固定
ActiveWindow.FreezePanes = True

End Sub

結果として配信できるぐらいにはなりました。

完成版.png

以上で、冒頭の動画のように完全自動でメール配信まで行ってくれるようになります。

気を付けるポイント

  • ネットワークの不安定さ: データのダウンロード前後に待機時間を設け、ネットワークの安定を確保しましょう

  • マクロの連携: マクロ名を間違えるとフローが動作しません。正確に入力し、事前にテストを

  • メールの複数送信: 複数宛先には、「;」で区切ることが必要です

フィードバックを受けてみて感じたこと

デジタルに慣れていない人に複雑なフローを説明しても興味を持ってもらえないと感じました。最初は簡単なフローから始め、徐々に機能を拡張することで、チーム全体の業務効率を向上させることができました。小さな成功体験を提供することで、デジタルツールへの理解と信頼が深まりました。

まとめ

シンプルな自動化から始めることで、チームの効率化に一歩前進できたと思います。デジタルツールを活用する際には、徐々に慣れてもらうステップを踏むことが重要だと感じました。今後も継続的に改良を重ね、より効果的な業務フローを目指していきます。

8
7
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
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?