<あるファイルから指定した行数分データを抜き出す>
どうも、三流プログラマーのKen3です。 今回は、 掲示板にあった質問、 >タイトル:csvファイルの指定した行の表示 で、 Dir関数、あとはファイルの空読みをやってみます。 たいした解説、回答内容じゃないのですが。/* * 1.今回のキッカケ */
VBA系の掲示板 http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi で、下記の質問をもらいました。 ---- >タイトル:csvファイルの指定した行の表示 > >ホルダーの中にあるCSVファイルで特定のファイルすべての特定の行(数行)だけをエクセルのBOOKに一覧表示したい。 >10001001.1 >10001001.2 >10001001.3 >10001001.dat > . > . > . >上記のようなファイルで.datと付いたファイルすべての指定した行のみを >ファイルごとに一覧にしたいと思っていますが、出来るのでしょうか? ---- さてと、 該当ファイル名の規則は、*.dat あとは、特定の行を抜き出すのかぁ。/* * 2.調べごと、下準備 */
まずは、該当ファイルを取り出さないとね。
Sub FileChk_test()
Const strCHKPATH = "E:\Work\" 'データの保管場所
Dim strFILENAME As String 'ファイル名格納用
strFILENAME = Dir(strCHKPATH & "*.dat") 'ファイルのパスとパターンを渡す
While strFILENAME <> "" '空文字以外の間ループする
MsgBox "取り出したファイル名[" & strFILENAME & "]"
strFILENAME = Dir() '引数無しでDir関数を呼び出すと次のファイル名を返す
Wend
End Sub |
Sub READ_DATA_TEST()
Dim nFILENO As Integer 'ファイル番号
Dim strInFileName As String '入力ファイル名
Dim strBUFF As String 'レコードを読みこむバッファ
Dim n As Integer 'カウンター変数
strInFileName = "e:\work\0001.dat" 'ファイル名を作る今は固定値だけど
'ファイルの存在チェック
If Dir(strInFileName) = "" Then
MsgBox strInFileName & "が見つかりません"
Exit Sub
End If
'ファイルを入力モードで開く
nFILENO = FreeFile() '空いているフィル番号を取り出す
Open strInFileName For Input As #nFILENO 'ファイルを入力モードで開く
'空読みする(行を読み飛ばす)
For n = 1 To 4 'テストで4行読み飛ばす
Line Input #nFILENO, strBUFF '読み込むが何もしない
Next n
'数行読み込む
For n = 1 To 3 'テストで3行読み込む
Line Input #nFILENO, strBUFF 'バッファに読み込む
MsgBox "読み込んだデータ" & strBUFF
Next n
'ファイルは閉じようね
Close #nFILENO
End Sub |
Sub FileChk_test()
Const strCHKPATH = "E:\Work\" 'データの保管場所
Dim strFILENAME As String 'ファイル名格納用
strFILENAME = Dir(strCHKPATH & "*.dat") 'ファイルのパスとパターンを渡す
While strFILENAME <> "" '空文字以外の間ループする
MsgBox "取り出したファイル名[" & strFILENAME & "]"
strFILENAME = Dir() '引数無しでDir関数を呼び出すと次のファイル名を返す
Wend
End Sub |
Sub Main_test()
Const strCHKPATH = "E:\Work\" 'データの保管場所
Dim strFILENAME As String 'ファイル名格納用
Dim strBOX(3) As String 'データを格納するバッファ
strFILENAME = Dir(strCHKPATH & "*.dat") 'ファイルのパスとパターンを渡す
While strFILENAME <> "" '空文字以外の間ループする
'データを読み込むサブ関数を呼ぶ 5行目から3行読む
Call READ_DATA(strCHKPATH & strFILENAME, 5, 3, strBOX())
'strBOXにデータが読み込まれているので、それを利用した処理を書く
MsgBox "strbox(0)" & strBOX(0)
MsgBox "strbox(1)" & strBOX(1)
MsgBox "strbox(2)" & strBOX(2)
'次のファイル名を取り出す
strFILENAME = Dir() '引数無しでDir関数を呼び出すと次のファイル名を返す
Wend
MsgBox "処理終了"
End Sub |
Sub READ_DATA(strInFileName As String, _
nSTART As Integer, _
nREADCNT As Integer, _
strREADBUFF() As String)
Dim strBUFF As String 'データ読み込み用のバッファ
Dim nFILENO As Integer 'ファイル番号
Dim n As Integer 'カウンター変数
Dim nSETCNT As Integer
'ファイルを入力モードで開く
nFILENO = FreeFile() '空いているフィル番号を取り出す
Open strInFileName For Input As #nFILENO 'ファイルを入力モードで開く
'空読みする(行を読み飛ばす)
For n = 1 To nSTART - 1 '開始行数の1つ前まで空読みする
If EOF(nFILENO) = True Then Exit For '途中でファイルが終わっていたか?
Line Input #nFILENO, strBUFF '読み込むが何もしない
Next n
'数行分読み込み、バッファにセットする
nSETCNT = 0
For n = 1 To nREADCNT '読み込み行数分ループで読み込む
If EOF(nFILENO) = True Then Exit For '途中でファイルが終わっていたか?
Line Input #nFILENO, strBUFF 'バッファに読み込む
strREADBUFF(nSETCNT) = strBUFF 'データをn番目にセット
nSETCNT = nSETCNT + 1 'セット位置を+1する
Next n
'ファイルは閉じようね
Close #nFILENO
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]