アクセステーブルにインポートするために大きなテキストファイル(繰り返しヘッダー/トレイラー)をクリーンアップしようとしています。 私はこの前にポストをrefrencingています:速いプロセスを作るために読ん#inp_file_numのフォーラムバイナリとしてバイナリアクセスリードの場合はs_inp_fileを開くにはinp_file_numとして入力するためのオープンs_inp_file:Read Number of lines in Large Text File VB6VBAラージテキストファイルを読み込んで不要なテキスト行を削除します
私は何をしようとしていますがスイッチです。入力方法が長すぎます。問題は私のコードにあります。バイナリとして開くときにライン入力を使用することはできず、実行時エラー#62が発生します - 入力はループ内のファイルの最後まで達しました。前もって感謝します。
コード:
Sub Scrub_TextLines(s_inp_file As String, s_out_file As String)
Dim inp_file_num As Integer
Dim out_file_num As Integer
Dim text_line As String
Dim file_content As String
Dim buffer() As Byte
Dim i As Long
Const remove_text1 As String = "REPORTING SERVICE"
' Const remove_text2 As String = "PRODUCT TYPE -"
' Const remove_text3 As String = "ALL REPORT"
Const remove_text4 As String = "CLIENT NAME"
Const remove_text5 As String = "CLIENT ID"
Const remove_text6 As String = "TY YEAR"
Const remove_text7 As String = "CLIENT-ID2"
Const remove_text8 As String = "----"
inp_file_num = FreeFile
Open s_inp_file For Binary Access Read As #inp_file_num
ReDim buffer(LOF(inp_file_num) - 1)
Get #inp_file_num, , buffer
Do Until EOF(inp_file_num)
Line Input #inp_file_num, text_line
If text_line <> "" And _
Left(text_line, 4) <> " " And _
InStr(1, text_line, remove_text1, vbTextCompare) = 0 And _
InStr(1, text_line, remove_text4, vbTextCompare) = 0 And _
InStr(1, text_line, remove_text5, vbTextCompare) = 0 And _
InStr(1, text_line, remove_text6, vbTextCompare) = 0 And _
InStr(1, text_line, remove_text7, vbTextCompare) = 0 And _
InStr(1, text_line, remove_text8, vbTextCompare) = 0 Then
file_content = file_content & text_line & vbCrLf
' Debug.Print file_content
End If
Loop
Close #inp_file_num
out_file_num = FreeFile
Open s_out_file For Output As out_file_num
Print #out_file_num, file_content
Close #out_file_num
End Sub
おそらく32 thousandishのINTEGER限界を超えますか?変数をLONGに変更しますか? – PGCodeRider
私はあなたのループがどのように構造化されているのかと思う。あなたのdo-untilループは 'EOF'をチェックする前に本文を評価して、まだ読み込む行があることを確認します。 'Do ... Until'ループを' Do While ... Loop'ループに変更してみてください。私は 'Do not Not EOF(inp_file_num)'が動作するはずだと信じています。 –
クイックレスポンスありがとうございました - 私はループを変更しようとしましたが、 'Line Input #inp_file_num、text_line'という行で同じエラーが発生しました。 また、整数はファイル割り当て(FreeFile)を参照しているため、あまり増加しません。 – Andi