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?

🔰PoweShellでフォヌム入力

Last updated at Posted at 2025-01-26

はじめに

今回はPoweShellを䜿っお「.txt」ファむルを出力したす。
定型文を1字1句党郚入力するよりも固定文以倖の堎所だけ入力しお時短を図りたい方向けです。

たた、ちょっずした遞択で出力をアレンゞするこずも可胜ずしおいたす。

・コヌドは䟋文であり任意の文蚀に倉曎しおください
・コヌドが曞かれたファむルがあるパスを自動的に取埗し同じ堎所に出力するようにしおいたす。
・色々疑問点はあるず思いたすが䜕卒ご容赊ください。
・質問はAIが早くお正確です💊
・解説はコヌド䞭の「#」の右偎に党郚曞きたした。長いのにさらに解説郚分を蚭けるだなんお読む方のご負担にもなるず思いたすので💊

ではでは本題に
䞖の䞭色々ず䟿利になる䞀方で制玄も倚い。

"そんなのExcelで良いじゃん♪" ずか "○○むンストヌルすれば簡単ですよ♪"
ず想像される方が倚数だず思いたす。

でもこの䞖界 

「デフォルトアプリ以倖ダりンロヌドやむンストヌルは犁止!!」
「うちの䌚瀟予算がすくなくお、君のPCだけOffice䜿えないんだよね。蟛抱しお」

なんお䌚瀟も聞こえおこなかったり、聞こえおきたり 
そんなずきに䟿利なのがデフォルトでむンストヌルされおいるPoweShellです。

目次

・ 1.ps1コヌド(å…šæ–‡)
・ 2.実行
・ 3.動かない時は

1.ps1コヌド(å…šæ–‡)

.ps1ファむルのコヌド


# フォヌム゜フトの宣蚀、PoweShellを起動しただけではフォヌム゜フト自䜓が動かないのでロヌドさせおいる。
Add-Type -AssemblyName System.Windows.Forms
 
# 倉数にたっさらな板の様なフォヌムの基瀎板を栌玍
$form = New-Object System.Windows.Forms.Form
 
# フォヌムに衚瀺するタむトルを蚭定" "内の文字が反映される。
$form.Text = "入力フォヌム"
 
# 巊偎の数倀が暪幅、右偎が瞊幅
$form.Size = New-Object System.Drawing.Size(400,350)

 
# 文字を入力する郚分の配列宣蚀
$textboxs = @{}
 
# 文字を入力する巊偎に衚瀺する文蚀を配列で䜜成しおいる。
$labels = @("瀟内業務甚端末", "出匵先利甚端末", "瀟員名", "メヌルアドレス", "携垯電話")
$y = 10
 


# ====================================ラベル䜜成郚分======================================================================================================
 
# ②新しいラベルオブゞェクトを䜜成
$labeCAUTION = New-Object System.Windows.Forms.Label
$labeCAUTION.Text = "@hogehoge.co.jp"
$labeCAUTION.Location = New-Object System.Drawing.Point(250, 102)
# ラベルサむズを指定しないず途䞭で折返しおの衚瀺ずなるため指定。  
$labeCAUTION.Size = New-Object System.Drawing.Size(400, 20)
$form.Controls.Add($labeCAUTION)
 
 
# ====================================ラゞオボタン䜜成郚分====================================================================================================== 
 
# ラベル名("lables"配列)に察しおルヌプ凊理を実行。
foreach ($label in $labels) {
    # 新しいラベルオブゞェクトを䜜成
    $labelOBJ = New-Object System.Windows.Forms.Label
    # 䜜成したラベルは無名の状態のなので配列から1぀ず぀取り出し名前を蚭定
    $labelOBJ.Text = $label
    # ラベルを配眮する䜍眮を蚭定Excelで蚀う列は䞍動のため"10"ずしおいる。
    # 行は倉動するため倉数"y"ずし、1぀の凊理が終わるごずに蚭定した行に+30しおいる。
    $labelOBJ.Location = New-Object System.Drawing.Point(10, $y)


    # 䞊蚘はあくたで蚭蚈・䜜成たでで、ここでやっずフォヌムぞの蚭眮・配眮ずなる。
    $form.Controls.Add($labelOBJ)


# ====================================入力フォヌム䜜成郚分======================================================================================================

    # テキストを栌玍するための箱を準備しおいる。
    $textbox = New-Object System.Windows.Forms.TextBox
    $textbox.Location = New-Object System.Drawing.Point(150, $y)
    # 入力フォヌムに衚札・郚屋番号の様な物を蚭定
    $textbox.Name = $label

    $form.Controls.Add($textbox)
    # どの入力箱がどのラベル、名前の物ず認識させればよいのか蚭定しおいる。
    $textboxs[$label] = $textbox
    # フォヌムを配眮する行は倉動しないずいけないので1぀めで"30"を指定し、2぀めの䜜業からは+30ず䞋に、䞋に䞋がっおいく様にしおいる。
    $y += 30
    # 1぀の凊理が終わったら再床䞊に戻っお次の䜜業ぞ
}





# ====================================ラゞオボタン䜜成郚分======================================================================================================

# ラゞオボタンを配眮する土台を䜜成
# これがないずボタンを配眮しおも党遞択の状態になる。
$MyGroupBox1 = New-Object System.Windows.Forms.GroupBox
$MyGroupBox1.Location = New-Object System.Drawing.Point(150,160)
$MyGroupBox1.size = New-Object System.Drawing.Size(180,70)
$MyGroupBox1.text = "勀務地"

# ラゞオボタンの䜜成ただし、䞊蚘のグルヌプより「Size」数倀が倧きいず非衚瀺になるので泚意
# ボタンサむズを倧きくしたい堎合は䞊蚘の「グルヌプ」の「Size」も倉曎するこず。
$RadioButton1 = New-Object System.Windows.Forms.RadioButton
$RadioButton1.Location = New-Object System.Drawing.Point(10,20)
$RadioButton1.size = New-Object System.Drawing.Size(80,20)
$RadioButton1.Checked = $True
$RadioButton1.Text = "本瀟"

$RadioButton2 = New-Object System.Windows.Forms.RadioButton
$RadioButton2.Location = New-Object System.Drawing.Point(10,45)
$RadioButton2.size = New-Object System.Drawing.Size(100,20)
$RadioButton2.Checked = $False
$RadioButton2.Text = "倧阪支瀟"


# グルヌプ土台にボタンを蚭眮
$MyGroupBox1.Controls.AddRange(@($RadioButton1,$RadioButton2))

# 蚭眮した土台 + ボタンをフォヌムに远加
$form.Controls.Add($MyGroupBox1)

 

 
$y += 30
 
# 登録ボタンの䜜成
$button = New-Object System.Windows.Forms.Button
$button.Text = "Submit"
$button.Location = New-Object System.Drawing.Point(150, 270)
$form.Controls.Add($button)
 


# 遞択されたラゞオボタンの倀を取埗する関数
function Get-SelectedRadioButtonValue {
    param (
        [Parameter(Mandatory=$true)]

        # 「groupBox」が突然出おいるが[]内のシステムプロパティを倉数に栌玍しおいるだけ
        [System.Windows.Forms.GroupBox]$groupBox
    )
    # 1぀1぀倀を確認しTrueずなっおいる物を探し出す。
    foreach ($control in $groupBox.Controls) {

    # 「$control」に栌玍した型がラゞオボタン型か、さらに倀が「true」か確認しおいる。
        if ($control -is [System.Windows.Forms.RadioButton] -and $control.Checked) {
           
            # そしおTrueずなっおいるラゞオボタンの倀を「.Text」で栌玍
            return $control.Text
        }
    }
    return $null
}



# ここでも配列を䜿う。デフォルト文を配列に栌玍する堎合は「""」で囲むだけで良い
# 入力した倀に定型文を結合する堎合は「""」で結合する文を䜜成し「+」で結合を行う。
# ($***["■■■"].Text)ず曞く。「***」は入力フォヌムの倉数名、「■」は入力するフォヌムに぀けた名前が入る。 
# 入力フォヌムはあるが、入力した情報を保持する箱がないため箱を䜜成する。
# ただし、箱に名前を曞き、配列化しないずどのフォヌムに入力した文字をどれに栌玍するかができないため、蚭定しおいる。
# 固定文を远加したい堎合はここに曞く
$button.Add_Click({
    $inputs = @{}
    $inputs["瀟内業務甚端末"] = "Tokyo-Kanri-" + ($textboxs["瀟内業務甚端末"].Text)
    $inputs["出匵先利甚端末"] = "Tokyo-Kanri-" + ($textboxs["出匵先利甚端末"].Text)
    $inputs["瀟員名"] = $textboxs["瀟員名"].Text
    $inputs["勀務地"] = $selectedLocation = Get-SelectedRadioButtonValue -groupBox $MyGroupBox1
    $inputs["メヌルアドレス"] = $textboxs["メヌルアドレス"].Text
  $inputs["携垯電話"] = $textboxs["携垯電話"].Text 
    $inputs["固定文1"] = "これは固定文1です。"
 
     if ($selectedLocation -eq "本瀟") {
    $inputs["第2アドレス"] = "$($inputs["メヌルアドレス"])@honsya.co.jp"
    } elseif ($selectedLocation -eq "倧阪支瀟") {
    $inputs["第2アドレス"] = "$($inputs["メヌルアドレス"])@oosaka.co.jp"
    }
    $inputs["メヌルアドレス"] = ($textboxs["メヌルアドレス"].Text) + "@hogehoge.co.jp"
    


 
    $filename = "$($inputs["瀟員名"])_" + "$($inputs["瀟内業務甚端末"])_" + "$($inputs["出匵先利甚端末"]).txt"
    $outputPath = Join-Path (Get-Location) $filename
    # ここで「.txt」ファむルに出力しおいる。「`n」で改行前埌に空癜は䞍芁
    $content = "瀟員名: $($inputs["瀟員名"])`n瀟内業務甚端末: $($inputs["瀟内業務甚端末"])`n自宅利甚端末: $($inputs["出匵先利甚端末"])`n勀務地: $($inputs["勀務地"])`nメヌルアドレス: $($inputs["メヌルアドレス"])`n第2アドレス$($inputs["第2アドレス"])`n携垯電話$($inputs["携垯電話"])`n固定文挿入$($inputs["固定文1"])"
    [System.IO.File]::WriteAllText($outputPath, $content)
 
    [System.Windows.Forms.MessageBox]::Show("Data saved to $filename")
    $form.Close()
 })
$form.ShowDialog()

2.実行

さお䞊蚘のコヌドを実行するには「メモ垳」を開き、コヌドを貌り付けたす。
貌り付け埌は保存するのですが、ファむル名は「*** .txt」ではなく、
「***.ps1」で保存をお願いしたす。

たた、「゚ンコヌド」も「ANSI」で蚭定し保存しおください。
保存埌はファむルを右クリックしお「PowerShellで実行」をクリックするず動きたす。

3.動かない時は

䞊蚘の方法で動かない時はもう䞀぀ファむルを同じ堎所に䜜成したす。
「メモ垳」を開いお䞋蚘のコヌドを貌り付けおください。

「*** .bat」ファむルで「゚ンコヌド」はたたも「ANSI」を指定しお保存しおください。「***」は任意のファむル名が入りたす。

そしお䜜成した「*** .bat」ファむルをダブルクリックで実行しお完了です。

.batのコヌド
@echo off

rem 「.bat」ファむルがある堎所のパスを自動取埗
pushd %~dp0

rem 「***.ps1」の「***」郚分を䞊蚘で䜜成したファむル名に倉曎しおください。
powershell -Noprofile -ExecutionPolicy Unrestricted .\***.ps1

rem 䞋蚘の文蚀は「続行する堎合にはEnterを」ず衚瀺するための文蚀です。
rem 「.bat」を実行しおもすぐに消えない様にするためです。
pause



以䞊です。最埌たで閲芧いただきありがずうございたした。

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?