dポイントプレゼントキャンペーン実施中!

こんにちは
テキストファイルの1から2行目をのぞき、3行目からPCへよむといったことは
かのうなのでしょうか?全部よむことはできたのですが、特定の行を指定してなど
読み込む方法がありましたらおしえてください。
宜しくおねがいいたします。

質問者からの補足コメント

  • ありがとうございます。

    lines(i) でとりだしたものを 変数などに格納することはできないのでしょうか?
    たとえば
    3行目から7行目までの文字列を変数に格納をする場合など。

    3行目 111
    4行目 222
    5行目 444
    6行目 1234
    7行目 123455
    セルに格納することはできるのですが。、

    これを①1112224441234123455のように変数に格納したい
    ②111vblf222vblf444・・・のように変数へ格納をしたい

    よろしくおねがいいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/02/28 19:07

A 回答 (5件)

テキストの最後が改行で終わっている場合uboundを-1しますが


そうでない場合は-1しなくてもいいですね

set fs = CreateObject("Scripting.FileSystemObject")
set f1=fs.OpenTextFile("x.txt")
allLine=f1.readALL
lines=split(allLine,vbcrlf)
j=""
for i=3 to ubound(lines)
j=j&vbcrlf&i
next
msgbox j


j=j&vbcrlf&i→j=j&i
とすれば当然改行は入りません
    • good
    • 0

#3の回答者です。


>セルに格納することはできるのですが。、

結局、Excelなのでしょうか?

以下、7行で終わらないのなら、
 If i = END_NUM Then Exit Do '** 
コメントブロックするか削除してください。
出力に、デバッグプリントも入れておきました。

'//
Sub vbImportText()
 Dim Fname As Variant
 Dim FNo As Integer
 Dim TextLine As String
 Dim i As Long
 Dim buf1 As String, buf2 As String
 
 Const START_NUM As Long = 3 '3からスタート
 Const END_NUM As Long = 7 '7行で終了
 
 i = 0
 Fname = Application.GetSaveAsFilename("", "テキストファイル(*.txt),*.txt")
 If VarType(Fname) = vbBoolean Then Exit Sub
 FNo = FreeFile()
 
 Open Fname For Input As #FNo
 Do While Not EOF(FNo)
  Line Input #FNo, TextLine
  i = i + 1
  '*上限
  If i >= START_NUM Then
   buf1 = buf1 & Trim(TextLine) '①
   buf2 = buf2 & vbLf & TextLine '②
  End If
  If i = END_NUM Then Exit Do '** 下限
 Loop
 Close #FNo
 Cells(1, 1).Value = buf1  '①
 Cells(2, 1).Value = buf2  '②
' Debug.Print buf1  '①
' Debug.Print Mid(buf2, 2)  '②
End Sub
    • good
    • 0

たとえばこんなことですか?


今は、CSVの切り分けはできませんが、テキストファイルのみです。
#2さんをみて、そういえば、Excel VBAなんて書いていませんでしたね。違っていたら、また考えます。VBSでは、以下は違います。

'//
Sub vbImportText()
 Dim Fname As String
 Dim FNo As Integer
 Dim TextLine As String
 Dim i As Long
 Dim buf
 Const START_NUM As Long = 3 '3からスタート
 i = 0
 Fname = Application.GetSaveAsFilename("ファイルを選んでください", "(*.csv; *.txt),*.csv;*.txt")
 If VarType(Fname) = vbBoolean Then Exit Sub
 FNo = FreeFile()
 
 Open Fname For Input As #FNo
 Do While Not EOF(FNo)
  Line Input #FNo, TextLine
  i = i + 1
  If i >= START_NUM Then 'ここで調整します。
   Cells(i - START_NUM + 1, 1).Value = TextLine
  End If
  
 Loop
 Close #FNo
End Sub
    • good
    • 0

たとえば


set fs = CreateObject("Scripting.FileSystemObject")
set f1=fs.OpenTextFile("test.txt")
allLine=f1.readALL
lines=split(allLine,vbcrlf)
for i=3 to ubound(lines) -1
msgbox i
next
この回答への補足あり
    • good
    • 0

一文字ずつ読んでいって、改行コードを見つけた時点で一行と判断するので、


全行(全文字)読んで、いらないものを捨てるということになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A