2016-04-26 11 views
-1

列の値を考慮して、他のテキストファイルの内容を含む新しいテキストファイルを作成するスクリプトを作成する際に助けが必要です。 私は列Aに10の名前、列Bには1から3までの数字、10個のテキストファイルには名前として名前(1から10まで)が入っています。 B列の値とテキストファイルのテキストを考慮したA列の各名前のテキストファイルを作成する必要があります。列B同じ行の値は、新しく作成したテキストファイルが必要になります1である場合には、第1名の場合テキストを作成する異なるスプレッドシートのすべての行のファイル異なるテキストファイルのデータを持つファイル

1content1

2content2

3content3

: テキストファイルの内容が異なる3つの行が含まれています最初のテキストファイル(1)の最初の行だけを含む: "1content1"など。

これは可能ですか?どのように私はそれについて行くだろう。ありがとうございました!

答えて

0

私はあなたのデータが以下のイメージのものであると仮定しています。ここで

enter image description here

  1. A
  2. Bは、検討のために1から3

いくつかのことに及ぶ行番号を持つを作成するファイル名が含まれています:

  • 名前が1から10までのフォルダにすでに10個のテキストファイルがあると述べたので、データの各行についてこれらのファイルを選択しています。たとえば、行1は新しいファイルを名前File_Aで作成し、データは行番号になります。指定されたフォルダにある1.txtという名前のファイルの1次に、2行目については、新しいファイル名がFile_Bで作成され、データは行番号になります。 2 2.txtなどのファイルの2つ(これは明らかです)
  • コードは、10ファイルが既に保存されているのと同じフォルダに新しく作成されたファイルを保存します。


Sub CreateTextFile() 
    Dim hf As Integer: hf = FreeFile 
    Dim lines() As String 
    Dim i As Long, LastRow As Long, FileLine As Long, LineNum As Long, lineCntr As Long 
    Dim FileName As String, FilePath As String 
    Dim ws As Worksheet 
    Dim fso As Object, oFile As Object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    Set ws = ThisWorkbook.Worksheets("Sheet1") '---->change Sheet1 to your worksheet name 
    FilePath = "C:\test_folder\"  '---->change filepath as required 
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row 

    For i = 1 To LastRow 
     FileName = FilePath & i & ".txt" 
     LineNum = ws.Cells(i, 2).Value  

     'reading text file line by line 
     Open FileName For Input As #hf 
      lines = Split(Input$(LOF(hf), #hf), vbNewLine) 
     Close #hf 

     'writing particular line to new text file 
     For lineCntr = 0 To UBound(lines) 
      If lineCntr + 1 = LineNum Then 
       Set oFile = fso.CreateTextFile(FilePath & ws.Cells(i, 1) & ".txt") 
       oFile.WriteLine lines(lineCntr) 
       oFile.Close 
      End If 
     Next lineCntr 
    Next i 
    Set fso = Nothing 
    Set oFile = Nothing 
End Sub 

何かが明確でない場合は、私に教えてください。

+0

ありがとうございます!@Mrigitこれは素晴らしい作品です! – splertok

+0

@splertok - 喜んでお手伝いします。この解決策があなたに答えた場合は、それを答えとしてマークしてください。 – Mrig

関連する問題