VBA UTF-8のテキストファイルをソートして出力する
任意のテキストファイル(UTF-8)の内容を行単位で昇順ソートし、元のファイルに書き戻すコード例。
Public Sub SortText() Dim strarr() As String Dim strall As String 'ファイル名、任意の内容を指定 Dim filename As String: filename = "filepath(ex:C:\test\testflie.txt)" Dim strsave As Variant 'ファイル読み込み(UTF-8はADODB.Streamを使うほかなさそう) Dim adodb As Object: Set adodb = CreateObject("ADODB.Stream") adodb.Charset = "UTF-8" adodb.Open adodb.LoadFromFile filename strall = adodb.ReadText adodb.Close '以下は対象ファイルの改行がLFの例。CRLFの場合はvbCrLfを使用する。 strarr = Split(strall, vbLf) 'ソート SortArray strarr '保存 adodb.Open For Each strsave In strarr adodb.WriteText strsave & vbLf, 0 Next adodb.SaveToFile filename, 2 adodb.Close End Sub '配列引数arrのソートを実施 Private Sub SortArray(ByRef arr() As String) Dim arrCount As Integer Dim sortCount As Integer Dim strBuf As String For arrCount = 0 To UBound(arr) For sortCount = arrCount + 1 To UBound(arr) If arr(arrCount) > arr(sortCount) Then strBuf = arr(arrCount) arr(arrCount) = arr(sortCount) arr(sortCount) = strBuf End If Next sortCount Next arrCount End Sub
下記のようなファイルを指定し実行すると、
c d f 3 1 ぬ 5 @
下記のようにソートされる。
@ 1 3 5 c d f ぬ