prettify

2021年3月28日日曜日

Power Automate Desktop のフローをスケジュール実行したい!!

※2021/07/12 追記あり

 Power Automate Desktop は、Power Automate(クラウド)と連携することで

スケジューリングした時間に実行したり、トリガーしたりすることができるらしい。

でも、Power Automate(クラウド)は調べた感じ、無料では使えないっぽい😭

(試用期間中は無料らしいけど…)


トリガーは無理でも、スケジュール実行ぐらいはしたい。

でも、お金は掛けたくない😥


ということでVBAで Power Automate Desktop (PAD) のフローを

力技💪で起動してみました(笑)

(Let's Power Play!!)


クラスファイルにしたので興味があればどうぞ。

【ダウンロードページ】

Releases · nampro47/PADFlowLauncher · GitHub

※ページ内の"Source code (zip)"クリックでダウンロードできます。

【使用方法】

How to use · nampro47/PADFlowLauncher Wiki · GitHub


試してないけど、おそらくスクリーンセーバーや

画面ロックされている状態だと動かないと思います(多分)


作成過程を動画にしようと思ったけど、尺が長すぎてボツになりました😱

(編集無理っス💦)


クラスファイルを使うところだけでも、動画にしようかな~😒

(もったいないし…)


2021/07/12 追記

6月にPower Automate Desktopがバージョンアップしていたようで

ウィンドウタイトルが変わってました。

(「(プレビュー)」の文字がなくなってた💦)

YouTubeのコメントで教えてもらいました。助かります😊

GitHub上のコードを修正したので、ダウンロードしてもらえれば使えるはず…


もしくはウィンドウタイトルを設定できるようになっているので

タイトルに「Power Automate Desktop」を指定してもらえれば動くはず…

コード例)

Public Sub scheduleRun()
    With New PadFlowLauncher
        .windowTitle = "Power Automate Desktop"  '←これ追加😎
        .runFlow "Flow_Name_You_Wanna_Execute"
    End With
End Sub


GitHub触るのが久しぶりで更新に手こずったのはナイショ…😅


2021年3月22日月曜日

動画投稿予定

ついつい飽きっぽい性格なんで 

投稿予定の動画を書いとこうと思いますw

(投稿できなかったら、ごめんなちゃい(/ω\))


3/27(土) Webからファイルをダウンロード(VBA Selenium版) (中級シリーズ)

3/28(日) Webからファイルをダウンロード(Power Automate Desktop版) (中級シリーズ)

VBA IE版の流れで…

4/4(土) 正規表現 (入門シリーズ)

正規表現の説明をしてないのに動画で使ってたんで、そろそろ説明しようかな~と。

4/5(日) 再帰呼出 (中級シリーズ)

ファイル名に連番を付与する処理で使ってたんで、一応動画として出しとこうと…


出せるかな~(*‘ω‘ *)


2021年3月10日水曜日

動画の構想

Power Automate Desktop動画の受けが良さそうなんで
(あくまで、なんプロチャンネル内での話だけど…)
調子に乗って、もう一つ投稿しようと思ってます。

以前、動画投稿した「転記ツール」の機能を流用する感じでPower Automate Desktopを
使って自動化してみようと考えてます。

Power Automate (Desktopじゃない方)使わないとスケジュール実行とか、
メール受信をトリガーにして、みたいな事が出来なそうなんだよな〜😟

エンドユーザー向けのツールとしては、良さそうなんだけど
せめてコマンドからフロー実行できるようにならないかな〜

Desktop単体だと、作成したフローのエクスポートも出来なそうだし、
現時点では、本当に個人のちょっとした作業を自動化するぐらいしか用途がないかな?
ある意味、野良マクロ的なものが出来ない状態で良いのかな…😑

同じ処理をVBS版、VBA版で作るのも
比較できて面白そうかな?

2021年3月7日日曜日

セル内の一部文字に色を付けてみる(3)

 YouTubeに投稿した動画内で使用しているコードを貼っておきます。

ご参考までに。

エラー処理など、きちんと作りこんでいないので

コードをコピペして使用するのはオススメしません (m´・ω・`)m ゴメン…

また、実行時の条件によってXMLの形式が破損し、Excelデータを紛失する可能性がありますので、コードの内容を理解したうえでご使用ください。

※コードは自己責任でご使用ください。



【動作条件】
  • Module内にコードが記述されていること
  • キーワードを指定したテーブル名は "キーワードリスト" になっていること
  • キーワードが被っていないこと
  • 選択している範囲は文字を入力しているセルだけになっていること
  • 選択しているセルのCharactersオブジェクトにColor, Bold以外の設定がされていないこと
  • その他、なんプロが気付いていない動作条件を満たしていないこと(´・ω・`)


Public Sub mainWithXml()
    
    Dim objTarget As Range
    Set objTarget = Selection
    
    '先にセル内の書式をリセットしておく'
    With objTarget.Font
        .Color = 0
        .Bold = False
    End With
    
    Dim objCell As Range
    Dim objRngGrp As Range
    
    '100セルずつ処理'
    For Each objCell In objTarget.Cells
        
        If objRngGrp Is Nothing Then                '1つ目のセル'
            Set objRngGrp = objCell
            
        ElseIf objRngGrp.Cells.Count <= 99 Then     '2~99個目のセル'
            Set objRngGrp = Application.Union(objRngGrp, objCell)
            
        Else                                        '100個目のセル'
            
            Set objRngGrp = Application.Union(objRngGrp, objCell)
            
            Call setColorWithXml(objRngGrp, Application.Range("キーワードリスト"))
            
            Set objRngGrp = Nothing
            
        End If
        
    Next
    
    '100個に満たなかった最後のセル'
    If Not objRngGrp Is Nothing Then
        
        Call setColorWithXml(objRngGrp, Application.Range("キーワードリスト"))
        
    End If
    
End Sub


'XMLレベルでセル内の文字色(&Bold)を設定するプロシージャ'
'検索文字列が重複している場合は正常動作しません'
Private Sub setColorWithXml(ByVal objRngGrp As Range, ByVal objRngFindString As Range)
    
    Const FONT_ST = "<Font html:Color=""#[COLOR]"">"
    Const FONT_ED = "</Font>"
    Const B_ST = "<B>"
    Const B_ED = "</B>"
    
    Dim objRng As Range
    Dim strXml As String
    
    'XMLデータ取得'
    strXml = objRngGrp.Value(XlRangeValueDataType.xlRangeValueXMLSpreadsheet)
    
    '先にData要素を置換(リテラル決め打ち)'
    strXml = Replace(strXml, "<Data ss:Type=""String"">", _
                             "<ss:Data ss:Type=""String"" xmlns=""http://www.w3.org/TR/REC-html40"">")
    strXml = Replace(strXml, "</Data>", "</ss:Data>")
    
    '検索文字分ループ'
    For Each objRng In objRngFindString.Cells
        
        Dim strRep As String
        Dim lngColor As Long
        
        'HTMLカラーに変換'
        With objRng.Font
            lngColor = (.Color And &HFF) * (2 ^ 16)
            lngColor = lngColor + (.Color And &HFF00&)
            lngColor = lngColor + ((.Color And &HFF0000) / (2 ^ 16))
        End With
        
        'タグ生成'
        strRep = Replace(FONT_ST, "[COLOR]", Right(String(6, "0") & Hex(lngColor), 6))
        If objRng.Font.Bold Then strRep = strRep & B_ST
        strRep = strRep & objRng.Value
        If objRng.Font.Bold Then strRep = strRep & B_ED
        strRep = strRep & FONT_ED
        
        '置換処理'
        strXml = Replace(strXml, objRng.Value, strRep)
        
    Next
    
    'XMLデータを書き戻す'
    objRngGrp.Value(XlRangeValueDataType.xlRangeValueXMLSpreadsheet) = strXml
    
End Sub


リマインドメール自動送信

お久しぶりです! 1回目のワクチンがほとんど副反応なかったので調子乗ってたら2回目のワクチンで副反応出まくったなんプロです。 約3ヶ月ぶりの動画投稿になっちゃいました😅 いや~、ここまで面倒くさがり屋だと病気なのかな?😆 前回の動画のPowerAutomateやVBScrip...