PowerShell

複数のExcelファイルのシートを1つのExcelブックへコピーしていくPowerShellのサンプルコード

複数のExcelファイルのシートを1つのExcelブックへ集約していく、PowerShellのサンプルコードを紹介します。仕様サンプルとして、以下のようなExcelファイル3つを用意します。これら3ブックにあるシートを、新しいブックのAllSheets.xlsxにコピーします。Book1.xlsxBook2.xlsxBook3.xlsx実行結果のイメージは以下のとおりです。絵心がなくてすみませんが・・ソースコードソースはPowerShellで記述します。createAllBookSheets.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false# 出力先ファイル$destFilePath = (Convert-Path .) + "\AllSheets.xlsx"$destBook = $excel.Workbooks.add()# 入力元ファイル$sourceFiles = Get-Item *.xlsxf...
PowerShell

PowerShellによる挿入ソートのサンプルコード

PowerShellで挿入ソートをするサンプルコードを紹介します。仕様PowerShellで配列データを、挿入ソートをして表示します。PowerShellは標準でソートの関数が用意されていますが、あえて自力でソートする関数を作成します。ソースコード挿入ソートをする部分をinsertSort関数として別に切り出しました。テストデータとしてランダムな数字を配列で用意して、ソート前後で表示します。挿入ソート.ps1# sort functionfunction insertSort($data){ for($i = 0; $i -lt $data.Count; $i++){ # < $temp = $data for($j = $i; $j -gt 0 -and $data -gt $temp ; $j--){ # 挿入位置まで値をスライドする $data = $data } $data = $temp } return $data}$array1 = @(100,0,1,75,3,4,50,2,10,2,99,5,8,7,35,4,8)# ソート前表示Write-Host "ソート前"Wr...
PowerShell

PowerShellによりExcelのシートの並び替えをするサンプルコード

PowerShellによりExcelのシートの並び替えをするサンプルコードを紹介します。仕様以下のようなサンプルファイルを用意します。Book1.xlsxうまくいけば、PowerShell実行後にシートがSheet1→Sheet2→Sheet3・・・Sheet6の並び順に変わります。以下のキャプチャのイメージですソースコードソースはPowerShellで記述します。SortExcelSheets.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$fileName = "Book1.xlsx"$filePath = (Convert-Path .) + "/" + $fileName$book = $excel.Workbooks.Open($filePath)# シート名の取得$workArray = @()foreach ($s in $book.sheets){ $workArray+= $s.nam...
PowerShell

PowerShellによりExcelファイルのシートの色を変更するサンプルコード

PowerShellによりExcelファイルのシートの色を変更するサンプルコードを紹介します。Web上で類似ソースが意外に見つからなかったので、VBAのサイトを見ていろいろ試しました。仕様以下のようなExcelファイルを用意して、PowerShellからシートの色を変えてみます。なお、実装方法はいくつかあります。IndexColorプロパティ版IndexColorによりSheet1の色を設定します。一番記述が簡単です。たまにWeb上で出てくるサンプルもこの方法が多く、最も一般的な方法なのかと思われます。ソースコードsetSheetColorColorIndex.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$fileName = "Book1.xlsx"$filePath = (Convert-Path .) + "/" + $fileName$book = $excel.Workbooks.Open(...
PowerShell

PowerShellによりExcelの各シートの先頭に連番を振るサンプルコード

PowerShellによりExcelを操作し、各シートの先頭に連番を振るサンプルコードを作成しました。仕様Excelファイルの各シートの先頭に、PowerShellから連番を振ります。以下のようなサンプルファイルを用意します。book.xlsxPowerShell実行後、うまくいけば以下のようにシート名が変わります。実行前のシート名ABCD実行後のシート名01_A02_B03_C04_DソースコードソースはPowerShellで記述します。addSheetNumberToExcelSheet.ps1$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$fileName = "book.xlsx"$filePath = (Convert-Path .) + "\" + $fileName$book = $excel.Workbooks.Open($filePath)for ($i=1; $i -le $book.wo...
VBA

Excelの各シートの先頭に連番を振るVBAのサンプルコード

シート名の先頭に連番を振るVBAのサンプルコードを紹介します。仕様Excelファイルの各シートの先頭に連番を振ります。以下のようなサンプルファイルを用意してテストします。うまくいけば以下のようにシート名が変わります。実行前のシート名ABCD実行後のシート名01_A02_B03_C04_Dソースコードシート上にはボタン等は置きません。Visual Basic Editorを開き、ThisWorkbook上にそのまま、下記のaddSheetNumber()関数を配置しました。ソースコードOption Explicit Sub addSheetNumber() Dim i As Long For i = 1 To ThisWorkbook.Worksheets.Count Dim newSheetName As String newSheetName = Format(i, "00") & "_" & Worksheets(i).Name Worksheets(i).Name = newSheetName Next End Sub実行では上記のVBAを実行します。実行手順「開発」メニューから...
VBA

文字列を分割して1文字ずつセル入力するVBAのサンプルコード

文字列を分割して1文字ずつセル入力する、VBAのサンプルコードを紹介します。いわゆるExcel方眼紙で1文字1セル入力する形態をVBAコードでやろうというわけです。仕様試しに以下のようなExcelシートを用意して、1文字ずつセルに入力するVBAコードを作成します。実行前実行後(イメージ)サンプルコードとテスト大きく2種類のソースコードを作って実現してみました。一般的な方法一つ目はよく見かける一般的なソースコードです。(細かいところは、人によって違ったりするのですが・・・)入力テキストの1文字目からMid関数で1文字ずつ取得して、1文字ずつOffset関数でターゲットのセルに格納します。コード(1レコード)Sub splitText1record() '入力テキスト Dim intext As String intext = ActiveSheet.Cells(1, 1).Value '出力テキストのスタート位置 Dim targetRange As Range Set targetRange = Range(Cells(1, 2).Address) Dim i As Long For ...
PowerShell

PowerShellによる選択ソートのサンプルコード

PowerShellで選択ソートをするサンプルコードを紹介します。仕様PowerShellで配列データを、選択ソートして表示します。PowerShellは標準でソートの関数が用意されていますが、あえて自力でソートする関数を作成します。ソースコード選択ソートする部分をselectionSort関数として別に切り出しました。テストデータとしてランダムな数字を配列で用意して、ソート前後で表示します。SelectionSort.ps1# sort functionfunction selectionSort($data){ for($i = 0; $i -lt $data.Count - 1; $i++){ # 0 to array.count - 1 $min = $i; # 最小値 for ($j = $i+1; $j -lt $data.Count;$j++){ if($data -lt $data){ $min = $j } } # swap $tmp = $data $data = $data $data = $tmp } return $data}$array1 = @(100,0...
PowerShell

PowerShellによりExcelファイルをシート毎にファイル分割するサンプルコード

PowerShellによりExcelファイルを、シート毎にファイル分割するサンプルコードを紹介します。仕様シートが複数あるExcelファイルを、シートごとにブック分割します。以下のようなサンプルファイルを用意します。実行前PowerShellのScriptファイル(*.ps1)を実行すると各シートがファイルに運活されます。実行完了後に、以下3ファイルができるイメージです。「AAA.xlsx」「BBB.xlsx」「CCC.xlsx」ソースコードソースコードはPowerShellで記載しています。excelファイルはデータとして扱い、マクロ等は一切入れません。$excel = New-Object -ComObject Excel.Application$book = $null$excel.Visible = $false$excel.DisplayAlerts = $false$fileName = "book.xlsx"$filePath = (Convert-Path .) + "\" + $fileName$book = $excel.Workbooks.Open($filePa...
VBA

シート名毎にExcelファイルを分割するVBAのサンプルコード

シート名毎にExcelファイルを分割するVBAのサンプルコードを紹介します。仕様1ブックに複数のシートが存在するExcelファイルを、シートごとにファイル分割します。実際に実行してみるために、以下のようなサンプルファイルを用意します。マクロで実行すると各シートがファイルに分裂します。実行完了後に、以下3ファイルができるイメージです。「AAA.xlsx」「BBB.xlsx」「CCC.xlsx」ソースコード今回はシートをいじらずそのまま出力したいので、シート上にボタン等は置きません。Visual Basic Editorを開き、ThisWorkbook上にそのまま、下記のSplitSheet()関数を配置しました。ソースコードOption ExplicitSub SplitSheet() Dim wkSheet As Worksheet Dim newBook As Workbook Dim newBookName As String Dim folderParent As String Dim i As Long 'シートの保存先 folderParent = ThisWorkbook....