コーディング

VBA

シーザー暗号を生成するVBAのサンプルコード

シーザー暗号を生成するVBAのサンプルコードを紹介します。シーザー暗号とはシーザー暗号は元の文章の中の各文字を、決められた文字数分シフトして暗号文とする暗号です。文字数のシフト数が3の場合は下記のとおりです。平文暗号文excelbuzbi古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、シーザー暗号と呼びます。ただもちろん、この暗号方式は既に解読法がわかっている暗号方式です。友達との遊びや、プログラムの練習として使用するのが良いでしょうね。仕様下記のような画面を用意し、暗号化ボタンを押下した際に、指定したシフト数分、文字がずれる仕様にします。※ちなみに後ろにずれる例も見かけますが、前にズレるほうが正統派だと思いますのでその仕様にしました。制約Aが入力された場合はアルファベットのZに戻り出力するというシンプルな仕様にするため、入力は全て英字に限定します。アルファベットAからZに戻るだけでなく、記号やスペース、ひらがなや漢字を含めたときに文字体系ごとに考慮が必要になり、コードが複雑になるのを避けるためです。大文字・小文字は全て小文字に変換します。...
PowerShell

PowerShellによりファイルの更新日時を変更するサンプル集

ファイルの更新日時を変更する、様々なPowerShellのコマンドのサンプルを用意してみました。ファイルの更新日時変更サンプル集特定のファイルの更新日時を変更する特定のファイルの更新日時を変更する場合は下記の通りになります。ちなみに他のコマンドサンプルもこちらのコマンドをベースにしたものになります。コマンドSet-ItemProperty test1_abc_0002.txt -name LastWriteTime -value '2022/11/13 13:00:00'テスト実行実行前コマンド実行実行後フォルダ内のファイルの更新日時をまとめて変更するフォルダ内のファイルの更新日時を、まとめて変更するコマンドになります。ただしこの方法だとサブフォルダの更新日時は、更新されません。サブフォルダを含む方法は次の章で紹介します。コマンドSet-ItemProperty * -name LastWriteTime -value '2022/10/22 00:01:02'テスト実行実行前コマンド実行実行後サブフォルダを含めてフォルダ内のファイルの更新日時をまとめて変更するサブフォルダも含めてフォ...
PowerShell

PowerShellによるExcel操作ーセルの値を取得ーサンプルコード(様々な取得)

この記事ではPowerShellでExcelから様々な形式で値を取得してみます。逆にExcelのセルへ格納する方法は別記事で紹介していますので、興味があればご覧いただければと思います。仕様下記のようなExcelファイルを用意して、PowerShellから様々な値を取得してみます。実行結果はページの一番最後にあります。画面上は結果しか見えませんが、B4には「=3+4」の数式、B5にはSUM関数が格納されています。編集先Excelファイルの格納先:C:\temp\powershellファイル名:Book2.xlsxシート名:Sheet1ソースコードソースコードを以下に示します。Excelから様々な値を取得して、Write-Hostで標準出力に出力してみます。ただし、エラー処理は本筋とは異なるため、このソースコード内では省略しています。readExcel.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$cur...
PowerShell

PowerShellでExcel操作ーセルへ値を格納ーサンプルコード(様々な格納)

PowerShellでExcelへ値を格納できます。ただ、セルに普通に文字列を格納するサンプルはあちこちでよく見かけるのですが、手元で実行してみるとエラーになったり、数式や関数はどうやるんだ?というこということが多々あったので自ら試してみました。仕様下記のようなExcelファイルを用意して、PowerShellから様々な値を格納してみます。編集先Excelファイルの格納先:C:\temp\powershellファイル名:Book1.xlsxシート名:Sheet1※要は初期値のExcelファイルをCドライブに近いフォルダに置いた状態です。ソースコードソースコードを以下に示します。Excelへの様々な値入力を実行しています。ただし、エラー処理は本筋とは異なるため、このソースコード内では省略しています。writeExcel.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$currentPath = "C:\t...
PowerShell

Windowsでダウンロードファイルのハッシュ値を求めるコマンドのメモ(PowerShell版)

コマンドをコピペできるように一覧化しました。以前書いたコマンドプロンプト版をPowerShell版に書き換えてみましたが、どちらでもいいかと思います。構文Get-FileHash -Path <ファイルパス> -Algorithm <アルゴリズム>※書き方は複数あります。アルゴリズム一覧アルゴリズム記述例SHA1Get-FileHash -Path httpd-2.4.54.tar.bz2 -Algorithm SHA1SHA256Get-FileHash -Path httpd-2.4.54.tar.bz2 -Algorithm SHA256SHA384Get-FileHash -Path httpd-2.4.54.tar.bz2 -Algorithm SHA384SHA512Get-FileHash -Path httpd-2.4.54.tar.bz2 -Algorithm SHA512MD5Get-FileHash -Path httpd-2.4.54.tar.bz2 -Algorithm MD5実行例ここでは下記のファイルのダウンロード結果の検証を例に、certutilコマンド...
PowerShell

PowerShell実行時の「このシステムではスクリプトの実行が無効」エラーを回避する方法について

PowerShellを実行すると「このシステムではスクリプトの実行が無効になっているため、ファイル XXX.ps1 を読み込むことができません。」エラーが出ることがあります。今回はその回避方法を見ていこうと思います。現象の再現コマンドからソースコードを実行すると下記の通りエラーが発生します。ソースコード下記のコマンドでソースコード「writeOutput.ps1」を実行します。コマンドpowershell -File "writeOutput.ps1"ファイル名:writeOutput.ps1# 文字列出力Write-Output "Hello,World!"実行結果PS C:\temp> powershell -File "writeOutput.ps1"このシステムではスクリプトの実行が無効になっているため、ファイル C:\temp\writeOutput.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」( を参照してください。 + CategoryInfo : セキュリティ エラー: (: ) []、ParentContai...
VBA

Excelの非表示シートをまとめて再表示させるVBAのサンプルコード

Excelの非表示シートを一度再表示するVBAのサンプルコードを紹介します。最近のExcelではまとめて再表示ができるようになったのですが、昔のバージョンはできなかった記憶があります。事象このように大量の非表示シートが隠れている場合にサクっと再表示させます。通常マクロ版まずは理解しやすくて、無難なやり方です。ソースコードOption ExplicitSub doView() Dim wSheet As Worksheet For Each wSheet In Worksheets wSheet.Visible = True NextEnd Subテスト実行下記の通り、VBEを開き、上のソースコードを張り付けます。F5キーを押下すると下記の画面が出てくるので、Subプロシージャを選択して「実行」ボタンを押下します。下記の通り、非表示シートが再表示されました。イミディエイト版上記のコードだと冗長でただ非表示シートを再表示する程度なら、イミディエイトウィンドウで下記のようなコードを打ったほうが楽です。ソースコード構文的には厳密ではないですが、目的を達成するにはこれで十分です。For Each...
VBA

Excelのシートコピー(複製)を一気に行うVBAのサンプルコード

Excelでシートのコピーを一気に行うVBAのサンプルコードを紹介します。手作業でもいいのですが、100枚ぐらいシートをコピーして増やすとなるとマクロのほうが便利です。仕様画面仕様マクロを実行したときにテンプレートシート「template」を繰り返しコピーします。業務によってはテンプレートシート「template」を100枚作りたいケースもあるかと思いますが、今回は5枚シートコピーする例で説明します。※もちろん件数はループの最大件数で調整できます。ソースコード今回は下記のソースコードを用意しています。内容はシートの数だけシートをコピーして、適当な名前にシート名を変更しています。Sub copySheet() Dim i As Long For i = 1 To 5 '枚数はここのループ回数を調整します ActiveSheet.Copy After:=Worksheets(i) ActiveSheet.Name = "適当な名前" & i Next iEnd Subテスト実行下記の通り、VBEを開き、上のソースコードを張り付けます。F5キーを押下すると下記の画面が出てくるので、今回作成し...
VBA

Excelのシート名を一括で取得するVBAのサンプルコード

Excelのシート名を一括で取得するVBAのサンプルコードを紹介します。2つの方法を紹介してみます。通常マクロ版仕様画面仕様マクロを実行したときにシート名をセルに吐き出します。ソースコード実行中のワークブックのシート数分ループして、一番左のシートのセルの1列目にシート名を出力していっているだけです。Sub viewSheet() For Each i In ThisWorkbook.Sheets ThisWorkbook.Sheets(1).Cells(i.Index, 1) = i.Name Next iEnd Subテスト実行下記の通り、VBEを開き、上のソースコードを張り付けます。F5キーを押下すると下記の画面が出てくるので、Subプロシージャを選択して「実行」ボタンを押下します。下記の通り、シート名が出力されました。イミディエイトウィンドウ版イミディエイトウィンドウを使用すると、シートを汚さずにシート名を出力できます。ソースコードソースコードの内容は先ほどのソースコードとほぼ同じなのですが、イミディエイトウィンドウの場合は1行で実行しなければならないので、コロンで区切って1行に...
PowerShell

長いログファイルを指定行数で分割するPowerShellのサンプルコード

長いログファイルを指定行数で分割するPowerShellのサンプルコードを紹介します。分割したらファイル名の後ろに連番を振ります。仕様今回作成するスクリプトの仕様を説明します。動作仕様下記のようなフォルダで考えてみます。ログファイルがいくつか存在していて、中にはファイルサイズが大きすぎて開けないことがよくあります。こんな時、とりあえず巨大ファイルを指定行数で分割しようというスクリプトを作成します。ソースコードソースコードは下記のとおりです。作業フォルダ、作成先フォルダ、分割行数はお好みに応じて調整してください。#作業フォルダ$workPath = "C:\temp\powershell\file\"#作成先フォルダ$generatedPath = "C:\temp\powershell\file\gen\"#取得対象ファイルの拡張子指定$extension = ".log"#分割行数$splitSize = 1000000#生成フォルダ作成New-Item $generatedPath -ItemType Directory#作業フォルダへ移動Set-Location -Path $w...