コーディング

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...
PowerShell

指定フォルダ以下の全ファイルのフルパスを取得するPowerShellコマンドコード

指定フォルダ以下の全ファイルのフルパスを取得する、PowerShellコマンド備忘録です。こちらの記事は以前コマンドプロンプト版で示したサンプルのPowerShell版です。コマンドターミナル上に表示する場合Get-ChildItem -Path C:\temp -Recurse * | Where-Object { ! $_.PSIsContainer } | ForEach-Object { $_.FullName }ファイルへ結果を出力する場合Get-ChildItem -Path C:\temp -Recurse * | Where-Object { ! $_.PSIsContainer } | ForEach-Object { $_.FullName } | Out-File -FilePath C:\temp\fileList.txt※1 c:\temp\test4はファイル一覧の対象のフォルダ解説下記のコマンドレットをパイプライン|で繋げて処理を実現していますコマンドレットパラメータ説明Get-ChildItem-指定したフォルダ内の項目を一覧表示します。-Pathディレ...
PowerShell

ログファイルを1ファイルずつ圧縮するPowerShellのサンプルコード

ログファイルを1ファイルずつ圧縮するPowerShellのサンプルを紹介します。ローカルの開発環境で日別のログファイルが溜まってきたときに、1ファイルずつ圧縮をスクリプトで一括でやりたいときに便利です。仕様今回作成するスクリプトの仕様を説明します。動作仕様下記のようなフォルダで考えてみます。日時別のlogファイルと、その他のファイルが雑多に混じっています。フォルダ内のlogファイルのみ1つずつ圧縮されます。ソースコードソースコードは下記のとおりです。$currentPathはlogファイルが存在するパスです。適当に変えてください。ログファイル圧縮.ps1$currentPath = "C:\temp\powershell\file\"#作業フォルダ移動Set-Location -Path $currentPath#フォルダのファイル一覧取得$items = Get-ChildItem * -File -include *.log#ファイルごとにループforeach ($item in $items) { #ログファイル名 $currentName = $item.Name #圧縮ファイ...
PowerShell

大量に格納されたファイルを拡張子ごとにフォルダ分けするPowerShellのサンプルコード

大量に格納されたファイルを拡張子ごとにフォルダ分けする、PowerShellのサンプルを紹介します。開発環境などで大量のファイルが溜まってきたときに、ファイルを整理するときに便利です。(例えば*.error、*.warning、*.info別に分けたいなど)仕様フォルダに格納されたファイルを拡張子ごとに、サブフォルダに格納します。実行イメージ下記のファイルの例だと、xlsxファイルが1つ、txtファイルが4つ格納されています。この場合、実行すると5つのファイルが、新規作成された年月日のフォルダ「xlsx」、「txt」へ割り振りされます。ソースコードソースコードは下記のとおりです。$currentPathは日付ごとにフォルダ分けしたいファイルが存在するパスです。適当に変えてください。拡張子ごとにフォルダ分け.ps1$currentPath = "C:\temp\powershell\file\"#作業フォルダ移動Set-Location -Path $currentPath#フォルダのファイル一覧取得$items = Get-ChildItem * -File -include *.lo...
PowerShell

ファイルを更新日付ごとにフォルダ分けするPowerShellのサンプルコード

大量格納されたファイルを更新日付ごとにフォルダ分けする、PowerShellスクリプトのサンプルを紹介します。仕様フォルダに格納されたファイルを更新日付ごとに、サブフォルダに格納します。実行イメージ下記のファイルの例だと、4/17のファイルが1つ、2/25のファイルが4つ格納されています。この場合は各ファイルが、フォルダ「20220417」、フォルダ「20220225」へ割り振りされます。ソースコードソースコードは下記のとおりです。$currentPathは日付ごとにフォルダ分けしたいファイルが存在するパスです。適当に変えてください。更新日付ごとにフォルダ分け.ps1$currentPath = "C:\temp\powershell\file\"#作業フォルダ移動Set-Location -Path $currentPath#フォルダのファイル一覧取得$items = Get-ChildItem -File#ファイルごとにループforeach ($item in $items) { #フォルダ名作成(年月日) $newFolder = $item.LastWriteTime.ToSt...
VBA

Excelの各セルのURLを読み込んでURIデコードするサンプルコード(%で始まる謎の文字列を日本語にする)

Excelの各セルのURLをループで読み込んでURIデコードをするサンプルを紹介します。仕様画面仕様下記の通り表とボタンを用意しています。ボタンを押下すると、「変換前」の列を読み込んでURIデコードをして、変換後の列に出力します。ソースコードSub ボタン1_Click() Dim i As Long Dim cellValue As String Dim decodedURI As String 'クリア処理 Range(Range("B5"), Range("B" & Cells.Rows.Count)).ClearContents 'ヘッダ行以降を処理させるため5行目を選択 Cells(5, 1).Select Do 'オフセットによる行移動 cellValue = ActiveCell.Offset(i, 0).Value If Len(cellValue) = 0 Then '入力値がない場合終了 Exit Do Else 'URIDecode With CreateObject("ScriptControl") .Language = "JScript" decodedUR...
VBA

各セルを読み込んで特定文字がある場合、背景色を黄色く強調するVBAのサンプルコード(正規表現バージョン)

以前、Excelのヘッダー行を除く各セルをループで読み込んで特定文字がある場合、背景色を切り替えるVBAのサンプルをInStrで実現しました。「~という文字列を含む」という程度の文字列検索の場合はこれでよいのですが、細かい文字列条件の検索は正規表現を使用する必要があります。仕様InStr版と画面は同じで、下記の通り表とマクロ実行用のボタンを用意しています。今回は正規表現を「^か」とし、セル内の文字列が「か」で始まった場合に背景色を黄色にします。.Pattern = "^か" '正規表現パターンボタン押下後に表内のセルを全て検索して、正規表現に一致した場合、場合に背景色を切り替えます。また、前回と同様にヘッダー行は検索対象から除いています。ソースコードSub ボタン1_Click() '正規表現オブジェクトの設定 Dim reg As Object Set reg = CreateObject("VBScript.RegExp") With reg .Pattern = "^か" '正規表現パターン .IgnoreCase = False '大文字と小文字を区別する .Global = ...