VBAでStringを高速に扱う

Insert分を19万件分実行している処理が非常に遅い。
SQLを100件ずつまとめて実行しているけどやはり遅い。
文字列結合で遅くなっているので.NETであるStringBuilderと同じようなものがないか調べたところ、作っているサイトがあったのでメモ。
https://excel-ubara.com/excelvba4/EXCEL271.html

ー---
Option Explicit

Private sBuf As String
Private iBuf As Long

Private Sub Class_Initialize()
    sBuf = String$(32768, vbNullChar)
    iBuf = 0
End Sub

Public Sub Append(ByRef sValue As String)
    If iBuf + Len(sValue) > Len(sBuf) Then
        sBuf = sBuf & String$(CLng(Len(sBuf) * 2) + Len(sValue), vbNullChar)
    End If
    Mid(sBuf, iBuf + 1) = sValue
    iBuf = iBuf + Len(sValue)
End Sub

Public Function ToString() As String
    ToString = Left$(sBuf, iBuf)
End Function

0 件のコメント:

コメントを投稿

PowerShellでPDFファイルをテキスト化する

 PDFファイルが大量にあるため、中身を検索する方法がないか調べたときのメモ  ・外部のdllは必須っぽい  ・PowerShell単独や.NET Frameworkなどの利用だけではどうにもならない ちょっと調べるだけでもiTextSharpが使えそうだったので利用する。 1....