Excel

Excelのシート数をイミディエイトウィンドウで簡単に取得する

Excelファイルのシート数を数えてくれと言われて開いたときに、大量にシートがありすぎてなんだこりゃ~となったことはありませんか?そんなときにサクっと数えるテクニックです。状態Excel資料のシート数教えてと言われて、渡されたExcelファイルが鬼のようなシート数だったときはありませんか。左のシートから1,2,3,4・・・と数えていたら終わりが見えない作業になってしまいますし、数えている途中でExcelが固まったら・・。「シートの選択」画面から数えるというテクニックもあるのですが、それでも正確に数えられるのは20シートぐらいでしょう。また、枚数が多くなればなるほど、手作業はミスが多くなりがちです。実はExcelシートはメモリが許す限り何枚でも作成可能なので、100シートを超えるExcelファイルも普通にありえます。明らかにシートの数が多いと思ったら、手で数えるのはやめましょう。手順前置きが長くなりましたが、ここからが手順です。見なければならないExcelファイルが数ファイルで、そのExcelファイルに大量のシートがあるという状況であれば、下記の方法が使えるかもしれません。(ファイルが大...
PowerShell

PowerShellによってExcelのテキストボックスの値を設定するサンプルコード

PowerShellによって図形のテキストボックスの値を設定するコードを中々見つけられません。自力でサンプルコードを作ってみました。仕様下記のようなPowerShellのScriptファイル(*.ps1)と、編集先のExcelファイルを用意します。Excelファイルの中にいくつかテキストボックスを配置して、初期値として適当な値が記載されている状態にします。PowerShellのScriptによってこれらのテキストボックスのテキスト値を変更してみます。ソースコードExcelファイルを1ファイル読み取って、図形を1つずつループで取得し、テキストを1つ1つ書き換えていきます。ここでは"図形の値"という文字列と、1からの連番をテキストボックスへ格納します。changeExcelTextBox.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$fileName = "Book1.xlsx"$filePath = (...
PowerShell

PowerShellによってExcelのテキストボックスの値を取得するサンプルコード

PowerShellによってExcelの図形のテキストの値を取得するコードが、Web上になかなか見つからなかったので、サンプルコードを作ってみました。仕様下記のようなPowerShellのScriptファイル(*.ps1)と、読み込む先のExcelファイルを用意します。Excelファイルの中には、いくつかテキストボックスを配置して、その中にテキストを記述しています。これらのテキスト値を抽出し、PowerShellのコンソールに出力しようと思います。(ちなみにA1セルの値は意味はないです)ソースコードExcelファイルを1ファイル読み取って、図形を1つずつループで取得し、テキストをコンソール出力します。基本的にはPowerShellで記述する場合もVBAで記述する場合も一緒なのですが、細部がPowerShell仕様なので注意が必要です。readExcelTextBox.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $...
PowerShell

PowerShellのScriptファイル(*.ps1)をダブルクリックで実行できるようにする*.batの作成手順

PowerShellのスクリプトファイル(*ps1)を実行するには、コマンドを入力して実行する必要があります。しかしそれだとPowerShellに慣れていない人々にとっては敷居が高く、配布の時に壁になることがあります。なので解決方法として、ダブルクリック用のバッチの作りましたので、そのやり方を残しました。解決内容以下の問題点を解決します。問題点PowerShellのScriptファイル(*.ps1)を実行するには、コマンドラインを開いて以下のようなコマンドを実行します。このままだとスキルの低い人にPowerShell Scriptを配布した後、実行方法を説明するのが少々面倒です。(サラリーマン社会は技術以外にも部課長、お客様など技術者層以外にもファイルを配布することがよくあるのです)解決結果そのため以下のように、「exec.bat」のようなバッチファイルをダブルクリックするだけで、PowerShellファイルを実行してくれるようにします。ソースコードバッチファイルとPowerShellのファイルは以下のサンプルコードを例とします。バッチファイルpowershell -Execution...
PowerShell

フォルダ内のExcelの非表示シートの有無、拡大率100%、カーソル位置A1をチェックするPowerShellサンプル

以前、VBAで拡大率100%、カーソル位置A1を一括でチェックするPowerShellのScript(*.ps1)を書きました。あくまでフォルダ内のExcelファイルを一通りチェックして問題のある部分をピックアップするだけです。仕様例えばフォルダの中に納品前のExcelファイルが沢山あって、1つずつ目で問題ないかチェックするのは大変だと思いませんか?よく納品前のチェックリストに記載されていることとして下の3つが挙げられていると思います。お客さんに見せてはいけない非表示シートが混じっていていませんか?※これは大変まずい全部のシートで拡大率は100%にしていますか?カーソル位置がA1になっていますか?これらを手作業で確認すると結構な工数がかかる作業になってしまいます。今回上記の3点の確認をファイルを壊さずにスクリプト1本で確認してみます。ソースコードやることは大まかに以下のことです。作業フォルダに移動する作業フォルダ内にあるファイルごとにループするエクセルファイルを開くシートごとにループする各種チェックをする非表示シートチェック拡大率チェックカーソル位置チェック(A1)エクセルファイルを閉...
JavaScript

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

シーザー暗号を生成するJavaScriptのサンプルコードを紹介します。シーザー暗号とは※実はここの説明は以前作成したVBA版と同じなのですが・・シーザー暗号は元の文章の中の各文字を、決められた文字数分シフトして暗号文とする暗号です。文字数のシフト数が3の場合は下記のとおりです。平文暗号文excelbuzbi古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、シーザー暗号と呼びます。ただし、この暗号方式は既に解読法がわかっている暗号方式なので、遊び程度で使用するのがよろしいかと思います。仕様HTML形式で下記のような画面を用意し、暗号化ボタンを押下した際に、指定したシフト数分、文字が前にずれる仕様にします。下の画像は実行結果のイメージです。制約Aが入力された場合はアルファベットのZに戻り出力するというシンプルな仕様にするため、入力は全て英字に限定します。アルファベットAからZに戻るだけでなく、記号やスペース、ひらがなや漢字を含めたときに文字体系ごとに考慮が必要になり、コードが複雑になるのを避けるためです。大文字・小文字は全て小文字に変換します。...
VBA

Excel内の検索文字の文字の色を変更するVBAのサンプルコード

セル全体の色を変える方法はよく見かけるのですが、セル内の検索した文字列だけ色を変えるマクロはなかなか見かけないので、サンプルコードを作成してみました。仕様「検索文字」の欄に文字列を入力してボタンを押下すると、検索ヒットした一覧表のセル内の文字列を赤字にしてみます。セル内に複数の検索結果があっても、ヒットした文字列の色を全て変更するのがポイントです。ソースコード基本的な構文は下記のとおりです。Cells(行,列).Characters(Start:=num1, Length:=num2).Font.Color = RGB(numR,numG,numB)これを使って、サンプルコードを記述しました。Sub changeColor() Dim target As String Dim targetLength As Integer '検索対象 target = Range("B2").Value '長さ targetLength = Len(target) '表の最後までループする Dim i As Long For i = 6 To Cells(Rows.Count, 1).End(xlUp...
VBA

Excelのセル内の指定した位置から(n文字目,m文字)文字色を変更するVBAのサンプルコード

セル全体の色を変える方法はよく見かけるのですが、セル内の一部の文字列だけ色を変えるマクロはなかなか見かけないので試してみました。仕様Excelのセル内の一部の文字列の色を、VBAコードによって変更してみます。※以下は実行後のイメージ画像です。Charactersオブジェクトに開始位置と文字数を指定すると実現できるのですが、Charactersオブジェクトの動作をイメージできるように、様々なパターンで実装してみます。ソースコード基本的な構文は下記のとおりです。Cells(行,列).Characters(Start:=num1, Length:=num2).Font.Color = RGB(numR,numG,numB)これを使って、様々なパターンのサンプルコードを記述しました。Option ExplicitSub ボタン1_Click() '2文字目から3文字を色替え (カラーインデックス指定) Range("B2").Characters(Start:=2, Length:=3).Font.ColorIndex = 3 'red '3文字目から4文字を色替え (RGB指定) Range...
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'テスト実行実行前コマンド実行実行後サブフォルダを含めてフォルダ内のファイルの更新日時をまとめて変更するサブフォルダも含めてフォ...