Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10207 / 13646 ツリー ←次へ | 前へ→

【23117】テキストファイルの読込で kawata 05/3/14(月) 11:48 質問[未読]
【23119】Re:テキストファイルの読込で Jaka 05/3/14(月) 12:45 回答[未読]
【23123】Re:テキストファイルの読込で kawata 05/3/14(月) 12:56 お礼[未読]
【23126】Re:テキストファイルの読込で Jaka 05/3/14(月) 13:24 発言[未読]
【23127】Re:テキストファイルの読込で kawata 05/3/14(月) 13:29 お礼[未読]

【23117】テキストファイルの読込で
質問  kawata  - 05/3/14(月) 11:48 -

引用なし
パスワード
   kawataです、お世話になっております、よろしくお願いします。
(Windows2000/Excel2000)

テキストファイルを読み込んで加工するマクロを作成しています。
読込時に、いくつかの条件をつけてシートに貼り付けていくのですが
テキストが25000行ぐらいあり、かなり時間がかかります。

下記のコードと同じ動作で速くするにはどうすればいいのでしょうか?。
よろしくお願いします。

Sub 読込()

  read_file = "c:\test.txt"
  e_row = 0

  Open read_file For Input As #1

  Do While Not EOF(1)
    Line Input #1, TextLine
    If (Len(TextLine) > 0 And _
      Not TextLine Like "*AAA*" And _
      Not TextLine Like "*BBB*") Then

      With Sheets("data")
        e_row = e_row + 1
        .Range("a" & e_row).Value = TextLine
      End With

    End If
  Loop

  Close #1

End Sub

【23119】Re:テキストファイルの読込で
回答  Jaka  - 05/3/14(月) 12:45 -

引用なし
パスワード
   こんにちは。
こんな感じにするとか...。

  Dim haa() As variant
  read_file = "c:\test.txt"
  e_row = 0

  Open read_file For Input As #1
  Do While Not EOF(1)
    Line Input #1, TextLine
    If (Len(TextLine) > 0 And _
      Not TextLine Like "*AAA*" And _
      Not TextLine Like "*BBB*") Then
      i = i + 1
      ReDim Preserve haa(1 To i)
      haa(i) = TextLine
      If i = 5000 Then
        Sheets("data").Range("A65536").End(xlUp).Offset(1).Resize(UBound(haa)).Value = Application.Transpose(haa)
        Erase haa
        i = 0
      End If
    End If
  Loop
  Close #1
  If i <> 0 Then
    Sheets("data").Range("A65536").End(xlUp).Offset(1).Resize(UBound(haa)).Value = Application.Transpose(haa)
  End If
  Erase haa

【23123】Re:テキストファイルの読込で
お礼  kawata  - 05/3/14(月) 12:56 -

引用なし
パスワード
   kawataです、Jakaさん ありがとうございます。

速攻で試してみました。
速い!!!。

実は配列でもトライしていたのですが、どうもうまく動作しなくて。
こういう風に作ればきちんと動くのですね、もう自分のライブラリ
行きです、ありがとうございました。

お礼のついでで申し訳ないのですが、この「5000」という数字は
どういう数字なのでしょうか?

ぜひ、よろしくお願いします。

【23126】Re:テキストファイルの読込で
発言  Jaka  - 05/3/14(月) 13:24 -

引用なし
パスワード
   >この「5000」という数字は
>どういう数字なのでしょうか?

Transpose出来る最大要素数を忘れちゃったので、何となくエラーにならないキリのよさそうな所という事で...。

【23127】Re:テキストファイルの読込で
お礼  kawata  - 05/3/14(月) 13:29 -

引用なし
パスワード
   kawataです、Jakaさん、ありがとうございました。

完璧に動いております。

>Transpose出来る最大要素数を忘れちゃったので、何となくエラーに
>ならないキリのよさそうな所という事で...。

56**だったか、58**だったかそういう数字の記憶があるには
あるのですが・・・・。
了解しました、どうもありがとうございました。またよろしくお願いします。

10207 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free