3

次のコードを使用して、行を個々のテキスト ファイルにエクスポートしています。

Sub export_Test()

Dim firstRow As Integer, lastRow As Integer, fileName As String
Dim myRow As Integer,  myStr As String

firstRow = 10 
lastRow = 29

For myRow = firstRow To lastRow

     fileName = "C:\mallet\test\" & Cells(myRow, 1) & ".txt"
     Open fileName For Append As #1
     myStr = Cells(myRow, 2).Value
     Print #1, myStr
     Close #1
Next

End Sub

問題は、このコードが特定の行数用であることです。このコードをさまざまなデータ サンプルに使用したいので、Excel ファイルの行数はさまざまで、数千になる可能性があります。lastRow 変数を無限数に設定し、空の行に到達したときに For ループを終了する必要があります。

4

2 に答える 2

4

このコードは行10から始まり、2番目の列に空白のセルが見つかるまで実行されます。また、コードを少し短くしたことに注意してください(ただし、ファイルへの書き込みは同じです)。

Sub export_Test()
    Dim myRow As Long
    myRow = 10
    While Cells(myRow, 2).Value <> ""
        Open "C:\mallet\test\" & Cells(myRow, 1) & ".txt" For Append As #1
        Print #1, Cells(myRow, 2).Value
        Close #1
        myRow = myRow + 1
    Wend
End Sub
于 2013-02-20T21:20:29.217 に答える
0

これは、まさにあなたが望むことを行う私のプロジェクトのコードです - 空白の値で終わります

Sub export_Test()

Dim firstRow As Integer, lastRow As Integer, fileName As String
Dim myRow As Integer,  myStr As String

   firstRow = 10 
   myRow = firstRow

   ' Seed initial value
   Cells(myRow, 1).Select

   ' Keep going until a blank cell is found
   While Trim(ActiveCell.Value) <> ""

      fileName = "C:\mallet\test\" & ActiveCell.Value & ".txt"

      Open fileName For Append As #1

      myStr = Cells(myRow, 2).Value
      Print #1, myStr
      Close #1 

      ' Get the next value      
      myRow = myRow + 1
      Cells(myRow, NameCol).Select
   Wend

End Sub
于 2013-02-20T21:13:00.840 に答える