前提・実現したいこと
けっこう長いテキストファイルがいくつかあります。(1MB超えてるのが普通)
このなかのところどころに
busho('code001','部署名','担当者');
という記述があって
そこの部署コードと部署名と担当者が書いてあるところだけ集めたいのです。
書いたコード
VBA
1Sub getBusho() 2 3Dim fso As Object 4Set fso = CreateObject("Scripting.FileSystemObject") 5 6Dim sBuf As String 7With fso.GetFile("C:(フルパス)\text.txt").OpenAsTextStream 8 sBuf = .ReadAll 9 .Close 10End With 11 12Dim i As Long 13Dim j As Long 14Dim k As Long: k = 1 15Dim tmpBuf As String 16For i = 1 To Len(sBuf)-6 Step 1 17 If Mid(sBuf, i, 6) = "busho(" Then 18 j = i 19 tmpBuf = "" 20 Do While Mid(sBuf, j, 2) <> ");" And j < Len(sBuf) - 6 21 tmpBuf = tmpBuf & Mid(sBuf, j, 1) 22 j = j + 1 23 Loop 24 Cells(k, 1) = tmpBuf 25 k = k + 1 26 End If 27Next i 28 29End Sub
取れるんですけど
めっちゃ時間かかります……。
これは何が悪くて時間がかかるのでしょうか。
無駄な処理があるのでしょうか。
補足情報(FW/ツールのバージョンなど)
Excel2016で、Windows10です。
まず、「書いたコード」のどのステップが遅いのか、計測するべきかと思われます。
計測!計測ってどのようにするのですか?そこからかよ!って感じでしょうが、すみませんそこからです……。
誰か計測方法くらい教えたげてよ。http://officetanaka.net/excel/vba/tips/tips161.htm
回答5件
あなたの回答
tips
プレビュー