バイナリデータを読み込み、数値データに変換、テキストファイルにタブ区切りで書き出すプログラムをvba/excelにて作成中ですが、書き出し処理速度の遅さに困惑しております。数値データに変換した配列はDATA(256,120000)としており、書き出しデータ数は約3,000,000個あります。その書き出しプログラムを下記のように記述したのですが、とんでもなく処理速度がおそいのです。
Open "c:\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
対処方法をご存知でしたら、ご教授願います。
お世話になります。
引数1=結合したいテキストファイルの存在するフォルダパス("Y:\Work")
引数2=結合後のテキストファイルのフルパス("Y:\Temp\Merge_All.csv")
を引き渡し、
引数1で指定したフォルダ内に存在する、
拡張子"dat"の複数ファイルを一つに結合する共通モジュール
を作成したいと思っています。
下記モジュールをメインモジュールから何度か呼び出しているのですが、
一度目は問題なく実行されるのですが、
二度目に実行する場合に、
Set oTextFile = oFs.OpenTextFile(sFilename, 1)の行で
エラー メッセージ
"Runtime Error! Abnormal Program Termination."
が表示され処理が中断してしまい困っています。
お気づきの問題点がございましたら、是非お時間のある時にご指導いただけると幸いです。
ヒントでもかまいませんので、よろしくお願いいたします。
ついでといってはなんですが、、、
本来はヘッダー付ファイルを先頭ファイルのヘッダーだけを残して
一つに結合したいと思っていたのですが、
ファイルサイズが膨大なため、ReadLineでは遅すぎてあきらめ、
ヘッダーなしファイルをReadAllで単純結合していく方法にしました。
ヘッダー付ファイルを結合する良い方法をご存知の場合は、
是非合わせてご教授お願いいたします。
Sub MergeFiles(sFolderPath, sExpFilePath)
Const ForReading = 1
Set oFolder = oFS.GetFolder(sFolderPath)
Set oExpFile = oFS.CreateTextFile(sExpFilePath)
For Each sFilename In oFolder.Files
sFileExtension = oFS.GetExtensionName(sFilename)
If LCase(sFileExtension) = "dat" Then
Set oTextFile = oFS.OpenTextFile(sFilename, ForReading) ←二度目のここでエラーなんです
sExpLine = oTextFile.ReadAll
oTextFile.Close
oExpFile.WriteLine sExpLine
End If
Next
oExpFile.Close
End Sub
お世話になります。
引数1=結合したいテキストファイルの存在するフォルダパス("Y:\Work")
引数2=結合後のテキストファイルのフルパス("Y:\Temp\Merge_All.csv")
を引き渡し、
引数1で指定したフォルダ内に存在する、
拡張子"dat"の複数ファイルを一つに結合する共通モジュール
を作成したいと思っています。
下記モジュールをメインモジュールから何度か呼び出しているのですが、
一度目は問題なく実行されるのですが、
二度目に実行する場合に、
Set oTextFile = oFs.OpenTextFile(sFilename, 1)の行で
エラー メッセージ
"Runtime Error! Abnormal Program Termination."
が表示され処理が中断してしまい困っています。
お気づきの問題点がございましたら、是非お時間のある時にご指導いただけると幸いです。
ヒントでもかまいませんので、よろしくお願いいたします。
ついでといってはなんですが、、、
本来はヘッダー付ファイルを先頭ファイルのヘッダーだけを残して
一つに結合したいと思っていたのですが、
ファイルサイズが膨大なため、ReadLineでは遅すぎてあきらめ、
ヘッダーなしファイルをReadAllで単純結合していく方法にしました。
ヘッダー付ファイルを結合する良い方法をご存知の場合は、
是非合わせてご教授お願いいたします。
Sub MergeFiles(sFolderPath, sExpFilePath)
Const ForReading = 1
Set oFolder = oFS.GetFolder(sFolderPath)
Set oExpFile = oFS.CreateTextFile(sExpFilePath)
For Each sFilename In oFolder.Files
sFileExtension = oFS.GetExtensionName(sFilename)
If LCase(sFileExtension) = "dat" Then
Set oTextFile = oFS.OpenTextFile(sFilename, ForReading) ←二度目のここでエラーなんです
sExpLine = oTextFile.ReadAll
oTextFile.Close
oExpFile.WriteLine sExpLine
End If
Next
oExpFile.Close
End Sub
開発環境 SQLSERVER VB2005
SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。
SELECT CASE 日付 WHEN '2000/01/01' THEN ' '
ELSE 日付
END AS Expr1
FROM テーブル
CASE文以外でもできますか?
よろしくお願いいたします。
開発環境 SQLSERVER VB2005
SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。
SELECT CASE 日付 WHEN '2000/01/01' THEN ' '
ELSE 日付
END AS Expr1
FROM テーブル
CASE文以外でもできますか?
よろしくお願いいたします。
開発環境 SQLSERVER VB2005
SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。
SELECT CASE 日付 WHEN '2000/01/01' THEN ' '
ELSE 日付
END AS Expr1
FROM テーブル
CASE文以外でもできますか?
よろしくお願いいたします。