Power Automate Desktopで全角文字を半角に変換する方法【PAD】

Power Automate Desktop

Power Automate Desktop(PAD)で全角文字を半角に変換する方法について解説します。

PADに全角⇔半角の変換アクションは用意されていない

PADには半角文字・全角文字の変換アクションは用意されていません。そのため、「VBScriptの実行」にて変換を行います。

「VBScript」とは、Windowsに標準搭載されているスクリプト言語で、JavaやPythonなどの一般のプログラミング言語のように環境構築する必要がなく、WindowsのPCであればVBScriptを実行することができます。

詳細は以下記事にて解説しています。

「VBScriptの実行」アクションの使い方

「VBScriptの実行」アクションを追加すると、以下のようなダイアログが表示されます。

この赤枠部分にスクリプトを書いていきます。

全角数字を半角数字にするスクリプト

全角数字を半角数字にするスクリプトです。こちらのスクリプトは、以下のサイトに載っていたものをそのまま使わせていただきました。

Windowsで無料で使えるPower Automate Desktopの利用方法⑥ 全角数字を半角数字に変換したい

inp = "%NewVar%" 'NewVarをinpに格納する
out = ""'出力先outを初期化する
cnt = %NewVar.Length% 'NewVarの文字数を格納する
For lp = 1 to cnt		
buf = Mid(inp,lp,1) 'inpを先頭から1文字づつ取得し、bufに格納する。
Select Case buf		
Case "0": out = out & "0" 'bufが全角の「0」なら、半角の「0」を保存する
Case "1": out = out & "1" 'bufが全角の「1」なら ...
Case "2": out = out & "2"		
Case "3": out = out & "3"		
Case "4": out = out & "4"		
Case "5": out = out & "5"		
Case "6": out = out & "6"		
Case "7": out = out & "7"		
Case "8": out = out & "8"		
Case "9": out = out & "9"		
Case Else: out = out & buf 'bufが全角の「0」~「9」でなければ、元の1文字を保存する
End Select		
Next		
WScript.StdOut.Write(out) '編集が終わったoutを戻す

これを実行すると、元のテキストがDatetimeに変換されていることを確認できました。

半角カタカナを全角カタカナに変換するスクリプト

半角カタカナを全角カタカナに変換するスクリプトは以下になります。

' 半角カタカナから全角カタカナへの変換テーブル
Dim kanaConvMap
Set kanaConvMap = CreateObject("Scripting.Dictionary")
kanaConvMap.Add "ア", "ア"
kanaConvMap.Add "イ", "イ"
kanaConvMap.Add "ウ", "ウ"
kanaConvMap.Add "エ", "エ"
kanaConvMap.Add "オ", "オ"
kanaConvMap.Add "カ", "カ"
kanaConvMap.Add "キ", "キ"
kanaConvMap.Add "ク", "ク"
kanaConvMap.Add "ケ", "ケ"
kanaConvMap.Add "コ", "コ"
kanaConvMap.Add "サ", "サ"
kanaConvMap.Add "シ", "シ"
kanaConvMap.Add "ス", "ス"
kanaConvMap.Add "セ", "セ"
kanaConvMap.Add "ソ", "ソ"
kanaConvMap.Add "タ", "タ"
kanaConvMap.Add "チ", "チ"
kanaConvMap.Add "ツ", "ツ"
kanaConvMap.Add "テ", "テ"
kanaConvMap.Add "ト", "ト"
kanaConvMap.Add "ナ", "ナ"
kanaConvMap.Add "ニ", "ニ"
kanaConvMap.Add "ヌ", "ヌ"
kanaConvMap.Add "ネ", "ネ"
kanaConvMap.Add "ノ", "ノ"
kanaConvMap.Add "ハ", "ハ"
kanaConvMap.Add "ヒ", "ヒ"
kanaConvMap.Add "フ", "フ"
kanaConvMap.Add "ヘ", "ヘ"
kanaConvMap.Add "ホ", "ホ"
kanaConvMap.Add "マ", "マ"
kanaConvMap.Add "ミ", "ミ"
kanaConvMap.Add "ム", "ム"
kanaConvMap.Add "メ", "メ"
kanaConvMap.Add "モ", "モ"
kanaConvMap.Add "ヤ", "ヤ"
kanaConvMap.Add "ユ", "ユ"
kanaConvMap.Add "ヨ", "ヨ"
kanaConvMap.Add "ラ", "ラ"
kanaConvMap.Add "リ", "リ"
kanaConvMap.Add "ル", "ル"
kanaConvMap.Add "レ", "レ"
kanaConvMap.Add "ロ", "ロ"
kanaConvMap.Add "ワ", "ワ"
kanaConvMap.Add "ヲ", "ヲ"
kanaConvMap.Add "ン", "ン"
' 拗音
kanaConvMap.Add "ャ", "ャ"
kanaConvMap.Add "ュ", "ュ"
kanaConvMap.Add "ョ", "ョ"

' 長音
kanaConvMap.Add "ー", "ー"

' 濁点・半濁点付きカタカナへの変換ルール
kanaConvMap.Add "ガ", "ガ"
kanaConvMap.Add "ギ", "ギ"
kanaConvMap.Add "グ", "グ"
kanaConvMap.Add "ゲ", "ゲ"
kanaConvMap.Add "ゴ", "ゴ"
kanaConvMap.Add "ザ", "ザ"
kanaConvMap.Add "ジ", "ジ"
kanaConvMap.Add "ズ", "ズ"
kanaConvMap.Add "ゼ", "ゼ"
kanaConvMap.Add "ゾ", "ゾ"
kanaConvMap.Add "ダ", "ダ"
kanaConvMap.Add "ヂ", "ヂ"
kanaConvMap.Add "ヅ", "ヅ"
kanaConvMap.Add "デ", "デ"
kanaConvMap.Add "ド", "ド"
kanaConvMap.Add "バ", "バ"
kanaConvMap.Add "ビ", "ビ"
kanaConvMap.Add "ブ", "ブ"
kanaConvMap.Add "ベ", "ベ"
kanaConvMap.Add "ボ", "ボ"
kanaConvMap.Add "パ", "パ"
kanaConvMap.Add "ピ", "ピ"
kanaConvMap.Add "プ", "プ"
kanaConvMap.Add "ペ", "ペ"
kanaConvMap.Add "ポ", "ポ"
kanaConvMap.Add "ヴ", "ヴ"
kanaConvMap.Add "ヺ", "ヺ"


' 入力文字列
inp = "%NewVar%" 'NewVarをinpに格納する
out = "" ' 出力文字列を初期化

For i = 1 To Len(inp)
    char = Mid(inp, i, 1)
    If i < Len(inp) Then nextChar = Mid(inp, i + 1, 1)

    If kanaConvMap.Exists(char) Then
        ' 半角カタカナの基本的な変換
        out = out & kanaConvMap(char)
        If nextChar = "゙" Or nextChar = "゚" Then
            ' 濁点または半濁点が次に来る場合は、変換を補正
            If nextChar = "゙" Then
                out = Left(out, Len(out) - 1) & ChrW(AscW(Right(out, 1)) + 1) ' 濁音に変換
            ElseIf nextChar = "゚" Then
                out = Left(out, Len(out) - 1) & ChrW(AscW(Right(out, 1)) + 2) ' 半濁音に変換
            End If
            i = i + 1 ' 濁点/半濁点をスキップ
        End If
    Else
        ' 半角カタカナ以外の文字はそのまま追加
        out = out & char
    End If
Next

' 結果を出力
WScript.StdOut.Write(out)

VBScriptの標準機能だけでは半角カタカナを全角カタカナに直接変換する関数は提供されていないので、カスタムの変換テーブルを作成し、手動で半角カタカナを全角カタカナにマッピングしています。

このフローを実行すると、

半角カタカナが全角カタカナに変換されました。

全角英字を半角英字に変換するスクリプト

全角英字を半角英字に変換するスクリプトは、以下のようになります。

' 入力文字列
inp = "%NewVar%" '
out = "" ' 出力文字列を初期化

' inpの長さを取得して、1文字ずつ処理
Dim i, c, code
For i = 1 To Len(inp)
    c = Mid(inp, i, 1)
    code = AscW(c)
    
    ' 全角英字(大文字)の場合
    If code >= &HFF21 And code <= &HFF3A Then
        out = out & ChrW(code - &HFF21 + &H41)
    ' 全角英字(小文字)の場合
    ElseIf code >= &HFF41 And code <= &HFF5A Then
        out = out & ChrW(code - &HFF41 + &H61)
    ' それ以外の文字はそのまま追加
    Else
        out = out & c
    End If
Next

' 結果を出力
WScript.StdOut.Write(out)

上記フローの実行結果は、以下のようになります。

全角英数字・記号を半角に変換するスクリプト

全角英数字・記号を半角に変換するスクリプトは以下になります。

' 入力文字列
inp = "%NewVar%"
out = "" ' 出力文字列を初期化

' inpの長さを取得して、1文字ずつ処理
Dim i, c, code
For i = 1 To Len(inp)
    c = Mid(inp, i, 1)
    code = AscW(c)
    
    ' 全角英数字または全角スペースの場合
    If (code >= &HFF01 And code <= &HFF5E) Then
        ' 全角記号・英数字を半角に変換
        out = out & ChrW(code - &HFF00 + &H20)
    ElseIf code = &H3000 Then
        ' 全角スペースを半角スペースに変換
        out = out & ChrW(&H20)
    Else
        ' それ以外の文字はそのまま追加
        out = out & c
    End If
Next

' 結果を出力
WScript.StdOut.Write(out)

上記フローの実行結果は、以下のようになります。

まとめ

今回は、Power Automate Desktop(PAD)で全角文字を半角に変換する方法について解説しました。

当ブログでは、Power Automate、Power Automate Desktopに関する記事を他にも投稿しています。もし、「このようなことが知りたい」「こんなフローの作り方が知りたい」等ございましたら、問い合わせやコメントからお気軽にご連絡ください。

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、QAエンジニアを経て現在RPAエンジニアとして働いています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

タイトルとURLをコピーしました