|    | 
     こんばんは。 
興味深いご質問ですね!! 
 
じょじょさんが投稿された配列DATA()の型は何でしょうか? 
数値データと書かれていることから推測すると、数値型の配列ということですか? 
(Long、Single、Double) 
新規ブックの標準モジュールにて 
 
以下のコードを実行してその処理速度を比べてみてください。 
 
(必ず、一度、ブックを保存した後に実行してください) 
 
'============================================================ 
Sub test1() 
  Dim i, j 
  Dim st As Double 
  Dim data(1 To 256, 1 To 120000) As Long 
  For i = 1 To 120000 
    For j = 1 To 256 
     data(j, i) = Int(Rnd() * 254) + 1 
     Next j 
    Next i 
  MsgBox "サンプルデータの準備完了" & vbCrLf & "これから、ファイルの書き込みを行います" 
  st = [now()] 
  Open ThisWorkbook.Path & "\test.txt" For Output As #2 
  For i = 1 To 120000 
    For j = 1 To 256 
     Print #2, data(j, i); Chr(9); 
     Next j 
    Print #2, Chr(10); 
    Next i 
  Close #2 
  MsgBox "処理時間 : " & Format([now()] - st, "hh:mm:ss") 
End Sub 
'====================================================================== 
Sub test2() 
  Dim i, j 
  Dim st As Double 
  Dim data(1 To 256, 1 To 120000) As Long 
  For i = 1 To 120000 
    For j = 1 To 256 
     data(j, i) = Int(Rnd() * 254) + 1 
     Next j 
    Next i 
  MsgBox "サンプルデータの準備完了" & vbCrLf & "これから、ファイルの書き込みを行います" 
  st = [now()] 
  Open ThisWorkbook.Path & "\test.txt" For Output As #2 
  For i = 1 To 120000 
    For j = 1 To 256 
     Print #2, CStr(data(j, i));Chr(9); 
     Next j 
    Print #2, Chr(10); 
    Next i 
  Close #2 
  MsgBox "処理時間 : " & Format([now()] - st, "hh:mm:ss") 
End Sub 
'====================================================================== 
Sub test3() 
  Dim i, j 
  Dim st As Double 
  Dim data(1 To 256, 1 To 120000) As Long 
  For i = 1 To 120000 
    For j = 1 To 256 
     data(j, i) = Int(Rnd() * 254) + 1 
     Next j 
    Next i 
  MsgBox "サンプルデータの準備完了" & vbCrLf & "これから、ファイルの書き込みを行います" 
  st = [now()] 
  Open ThisWorkbook.Path & "\test.txt" For Output As #2 Len = 5120 
  For i = 1 To 120000 
    For j = 1 To 256 
     Print #2, CStr(data(j, i)); Chr(9); 
     Next j 
    Print #2, Chr(10); 
    Next i 
  Close #2 
  MsgBox "処理時間 : " & Format([now()] - st, "hh:mm:ss") 
End Sub 
 
test1,test2,test3の順に処理時間は短縮されています。 
 
特にtest1とtest2の処理時間差は顕著です。 
 
何故かというと、test1とtest2では、作成するファイル容量が違うからです。 
 
数値データに対して、 
 
Print #2,data; 
 
とした場合、データの前後に空白が書き込まれます 
 
空白123空白Tab空白222空白 
 
のように。 
 
対して、test2の文字列データに変換後の書き込みでは、空白が書き込まれません。 
 
123Tab222 
 
というように 
 
作成されるファイルが小さいのですから、処理時間が速いのです。 
 
test3では、バッファサイズを設定してみました。 
 
微量ですが、処理時間が短縮されています。 
 
試してみてください。 
 | 
     
    
   |