【VBA】テキストファイルをソートする

VBAで
 ・テキストファイルをソート
できます!

VBAから
 ・Power Shellのコマンドレットを実行
することで実現します!

PR

VBAコード

ここでは例として
 ・デスクトップ配下のテキストファイル「sample.txt」をソート
します。

テキストファイル「sample.txt」
テキストファイル「sample.txt」
テキストファイル「sample.txt」の内容(ソートされていない)
Option Explicit

Sub sample()
    
    Dim targetFile As String
    Dim psCommand As String
    Dim wsh As Object
    Dim result As Integer
    
    '対象ファイル
    targetFile = "C:\Users\user\Desktop\sample.txt"
    
    'PowerShellのコマンドレットを組み立て
    psCommand = "powershell -NoProfile -ExecutionPolicy Unrestricted "
    psCommand = psCommand & "(Get-Content " & targetFile & ") | Sort-Object | Out-File -Encoding default " & targetFile
    
    Set wsh = CreateObject("WScript.Shell")
    
    'PowerShellのコマンドレットを実行
    result = wsh.Run(Command:=psCommand, WindowStyle:=0, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("ソートが正常終了しました。")
    Else
        MsgBox ("ソートが異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

「対象ファイル」を指定します(11行目)。

実行するPower Shellのコマンドレットを組み立てます(14、15行目)。
※コマンドレット「Get-Content」と「Sort-Object」によりソートをします。
※コマンドレット「Out-File」により、ソート後の内容を対象ファイルへ書き込みます。
※文字化けしないように、オプション「-Encoding default」を付けます。

PR

実行結果

テキストファイルをソートできました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

上記のVBAコードは以下の記事を参考にして作成しました。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●Power Shellのコマンドレット「Get-Content」


●Power Shellのコマンドレット「Sort-Object


●Power Shellのコマンドレット「Out-File」