• 締切済み

CSV取込みで最終行を取り込まない方法

CSVの取込みで1行目のヘッダーと最終行のフッターを取り込まず 2行目~最終行の前までの中身だけを取り込みたいのですが、 1行目をスキップする方法は、下記を参照にしてなんとかできましたが、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1230200277 ここに最終行をはぶくという処理をいれるにはどういたらいいでしょうか? ---------------- Private Sub コマンド0_Click() Dim FSO As Object Dim InFile As Object Dim Outfile As Object Dim CsvPath As String Dim WorkPath As String Dim i As Long Const skipRow = 1 ''1行読み飛ばしの1 ''元のCSVファイルのフルパスに変更して! CsvPath = "C\JPデータ取込CSV.csv" ''新しく作るCSVファイル。このMDBがあるフォルダにWork.csv 名で作られます。 WorkPath = CurrentProject.Path & "\Work.csv" '' FileSystemObjectのセット Set FSO = CreateObject("scripting.FileSystemObject") Set InFile = FSO.OpenTextFile(CsvPath, 1) Set Outfile = FSO.createTextFile(WorkPath) '' 読み飛ばし設定 For i = i To skipRow InFile.SkipLine Next i ''新しいCSVファイル作成 Outfile.Write InFile.ReadAll ''CSVファイルの終了と解放処理 Outfile.Close InFile.Close Set Outfile = Nothing Set InFile = Nothing ''Work.CSVファイルのインポート(今のDocmd以下をコピーし、ファイル名等を変更!) 'DoCmd.TransferText ・・・・・・ DoCmd.TransferText acImportDelim, "JPご清算書インポート定義", "T01_JPご精算書", WorkPath, True ''使用済みのWork.CSVを削除 FSO.DeleteFile WorkPath ''FileSystemObjectの解放 Set FSO = Nothing MsgBox "取り込み完了" End Sub

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

データの出力を1回遅らせるだけでは? Dim 現データ As String Dim 前データ As String Dim 次回以降 As Boolean '入力ファイルを開く Open CsvPath For Input As #1 '出力ファイルを開く Open WorkPath For Output As #2 '入力ファイルがEOFでなければ1行読み飛ばす If Not EOF(1) Then Line Input #1, 現データ '入力ファイルがEOFになるまでのループ Do Until EOF(1)   '入力ファイルから1行読み込む   Line Input #1, 現データ   If 次回以降 Then     '2回目以降は前のデータを出力する     Print #2, 前データ   Else     '初回はフラグをTrueにする     次回以降 = True   End If   '1回遅らせるため、データを記録しておく   前データ = 現データ Loop '全てのファイルを閉じる Close

関連するQ&A