PowerShell

PowerShell

Excelの各セルのフォント名(フォントファミリー)を変更するPowerShellのサンプルコード

Excelの各セルのフォント名(フォントファミリー)を変更するPowerShellのサンプルコードを紹介します。仕様ローカルの任意の場所にPowerShellの*.ps1ファイルと、Excelファイルを格納します。「Book1.xlsx」のA列のセルのフォント名を変更してみます。後でPowerShellの実行前後を比較するため、B列にもA列の内容をコピーしておきます。PowerShell実行前のフォント名は游ゴシックです。これを以下のような別のフォント名に変更させます。セル位置実行前実行後A1游ゴシックMS PゴシックA2游ゴシックMS ゴシックA3游ゴシックMS 明朝A4游ゴシックメイリオA5游ゴシック游ゴシックソースコード以下のコマンドとps1ファイルを準備しておきます。コマンドpowershell -ExecutionPolicy RemoteSigned -File "setExcelFontName.ps1"setExcelFontName.ps1$excel = New-Object -ComObject Excel.Application$book = $null$exc...
PowerShell

Excelのシートの並び順を逆順にするPowerShellのサンプルコード

Excelのシートの並び順を逆順にするPowerShellのサンプルコードを作ってみました。仕様ローカルの任意の場所にps1ファイルと、Excelファイルを格納します。Book1.xlsxを開くと、左から以下の順でシートが用意されています。Sheet1Sheet3Sheet5Sheet2Sheet4Sheet6PowerShellを実行すると、以下のように元の順と逆順に入れ分かるようにします。Sheet6Sheet4Sheet2Sheet5Sheet3Sheet1※あくまで逆順であって、ソートじゃないことに注意ソースコードpowershell本体と、PowerShellを実行するためのコマンドです。コマンドpowershell -ExecutionPolicy RemoteSigned -File "ReserveSheet.ps1"ReserveSheet.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $fals...
PowerShell

Wordの古い「97-2003文書(.doc)」を新しい「Word文書(.docx)」の形式にまとめて変換するPowerShellのサンプルコード

Wordの古い「97-2003文書(.doc)」を新しい「Word文書(.docx)」の形式にまとめて変換するPowerShellのサンプルコードを紹介してみようと思います。doc形式?と思われるかもしれませんが、まだまだ古い文書を保有している企業は多いと思いますので、使いどころはあると思います。仕様以下のようにwordの古いファイル形式「*.doc」ファイルが同じディレクトリに格納されているとします。これらを「transWordFiles.bat」バッチをダブルクリックするだけで、新しいWordの形式に変換するという仕様です。※もちろん拡張子だけ変えるとかいうこざかしいことはしません。今回の場合はとりあえず例としてWordファイルを5ファイル用意しました。が、たぶん数百ファイルぐらいは大丈夫なんじゃないかと思います。ソースコードバッチ処理はPowerShellを呼び出すだけです。ポリシーの関係で一回バッチから実行していますが、PCの設定を変更して直接PowerShellの処理を実行しても良いかと思います。transWordFiles.batpowershell -ExecutionP...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得しないパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値が不要で取得しないパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。テストで実行するPowerShellのコマンドはなんでもよいのですが、ここでは「Rename-Item」にしてみましょう。マクロファイル(xlsm)と同じディレクトリにファイル「File1.txt」を置き、マクロからPowerShell経由でファイル名を変更してみます。マクロを実行したらファイル名が、「File1.txt」から「File2.txt」になります。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっていま...
PowerShell

VBAからPowerShellのコマンドを実行するサンプルコード(戻り値を取得するパターン)

VBAからPowerShellのコマンドを実行するサンプルコードを2パターン作成してみました。この記事ではそのうちの戻り値を取得するパターンを紹介します。準備事前準備として、VBAからPowerShellコマンドを実行するには以下の設定が必要です。ツールバーから「参照設定」を選択「Windows Script Host Object Model」のライブラリファイルにチェックを入れます。仕様VBAからPowerShellコマンドを呼び出します。PowerShellのコマンドはなんでもよいのですが、「Get-Date」にして結果をVBAのMsgBox関数で表示してみます。見出し念のため補足しますが、実現している処理自体はVBAからPowerShellを経由する必要性はありません。マクロからPowerShellを実行する方法をテストするためにやっています。ソースコードWScript.ShellのExecメソッドにより、powershellのコマンドを実行しています。execPowerShell.xlsmOption ExplicitFunction execPowerShell(psCmd...
PowerShell

PowerShellで関数の引数の記述例と実行結果の一覧

以前記事にも書いたのですが、PowerShellの関数の仮引数は丸括弧を使用しません。PowerShellは他の言語と関数への仮引数の記述が違うので、記述例を一覧化して残してみようかと思います。引数の記述例引数なし~引数2つまでのいろいろなパターンを実行結果含めてみました。引数なし引数なしのパターンです。ソースコードfunction doFunction(){ Write-Host "zero"}#引数なしdoFunctionRead-Host実行結果引数1つ引数が1つのパターンです。ソースコードfunction doFunction($a){ Write-Host $a}# 引数 1つdoFunction 1Read-Host実行結果引数2つ(数字と数字)引数が2つのパターンです。ソースコードfunction doFunction($a,$b){ $result = $a * $b Write-Host $result}# 引数 2つdoFunction 2 3Read-Host実行結果引数2つ(数字と文字列)違う型の引数が2つあるパターンです。ソースコードそのまま内容表示でも良いの...
PowerShell

PowerShellで関数の引数が2つ以上の時に引数がうまく渡されなくてハマったので修正方法の備忘録(ハマった)

PowerShellで関数の引数が2つ以上になると、引数がうまく渡されない現象にしばらくハマっていました。(初心者ですね)PowerShellは他の言語と比べると、関数への仮引数の記述が違います。正しく動作する記述について備忘録として残します。正しく動作しない引数2つ以上のコード(悪い例)まずは悪い例です。ソースコードJavaやそれに類似する言語をかじっている人は、PowerShellでもこんな関数の呼び出しをやりがちです。function doFunction($a,$b){ $result = $a * $b Write-Host $result}# 引数 2つ ※誤りdoFunction (2,3)Read-Host実行結果これだと思った通りに動きません。実行結果すると、2 * 3の計算結果の"6"が表示されるかと思いきや、何も表示されません。構文的には誤りではないので、やっかいなことにエラーも出てこないです。正しい動作する記述例PowerShellでは、仮引数に丸括弧を付けません。 ※丸括弧とは()他の言語をやっていると違和感があるのですが、もともとコマンドだと考えると当たり前...
PowerShell

Excel上のチェックボックスの状態を変更するPowerShellのサンプルコード(フォームコントロール)

Excel上のフォームコントロールのチェックボックスの状態を変更する、PowerShellのサンプルコードを紹介します。操作対象ExcelファイルPowerShellから操作するチェックボックス入りのExcelファイルです。Book1.xlsx下記画像の1行目3列目のアイコンのチェックボックスを使用しています。細かいことを書くとこんな状態ですがさらっと読めばよいです。オブジェクト名「Check Box 1」~「Check Box 5」の、チェックボックスを5つ追加しています。チェックボックスはグループ化されています。チェックボックスはフォームコントロールです。※ActiveXコントロールではありません。単一のチェックボックスの変更ソースコード「りんご」のチェックボックスについてONにしてみます。「りんご」のオブジェクト名は「Check Box 1」なので、CheckBoxesに「Check Box 1」を指定します。$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$e...
PowerShell

Excel上のチェックボックスの状態を取得するPowerShellのサンプルコード(フォームコントロール)

Excel上のフォームコントロールのチェックボックスの状態を取得する、PowerShellのサンプルコードを紹介します。操作対象ExcelファイルPowerShellから操作するチェックボックス入りのExcelファイルです。Book1.xlsx下記画像の1行目3列目のアイコンのチェックボックスを使用しています。細かいことを書くとこんな状態ですがさらっと読めばよいです。オブジェクト名「Check Box 1」~「Check Box 5」の、チェックボックスを5つ追加しています。チェックボックスはグループ化されています。チェックボックスはフォームコントロールです。※ActiveXコントロールではありません。単一のチェックボックスの状態の取得ソースコード「りんご」のチェックボックスの状態を取得して、表示してみます。「りんご」のオブジェクト名は「Check Box 1」なので、CheckBoxesに「Check Box 1」を指定します。$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $...
PowerShell

PowerShellの比較演算子のチートシート

PowerShellの比較演算子は-eqや-neなどの文字列で記述し、学生の頃数学で習ったような等号(=)、大なり(>)、小なり(<)を使いません。なので、演算子のパターンを覚えておく必要があります。ただ一覧化を見るとワンパターンなのに気づき、何度か構文を記述をすると慣れてくるはずです。チートシートPowerShellの比較演算子のチート表です。比較演算子覚え方(英語)Java(参考)意味挙動-eqequal==等しい左辺と右辺が等しい場合、$trueを返します-nenot equal!=等しくない左辺と右辺が等しくない場合、$trueを返します-ltless than<より小さい左辺が右辺より小さい場合、$trueを返します-leless than or equal<=以下左辺が右辺以下の場合、$trueを返します-gtgreater than>より大きい左辺が右辺より大きい場合、$trueを返します-gegreater than or equal=以上左辺が右辺以上の場合、$trueを返します比較演算子のチート表基本はequal、less、greaterと数合わせのthanの4単語...