
私は、対応する値を含む.txt file
各値を作成したいと考えています。column A
columns B and C
答え1
これを見れば見るほど、便利な小さなマクロだということが分かりました。空白行の処理 (および Excel のロック) を防ぐために、データがある間だけファイルを作成するようにコードを書き直しました。また、 を使用すると、引用符print
のないwrite
テキストが作成されます。同じことを実現するために使用したのが次のコードです。
Sub CreateFile()
Do While Not IsEmpty(ActiveCell.Offset(0, 1))
MyFile = ActiveCell.Value & ".txt"
'set and open file for output
fnum = FreeFile()
Open MyFile For Output As fnum
'use Print when you want the string without quotation marks
Print #fnum, ActiveCell.Offset(0, 1) & " " & ActiveCell.Offset(0, 2)
Close #fnum
ActiveCell.Offset(1, 0).Select
Loop
End Sub
自由に使用し、必要に応じて変更してください。素晴らしいアイデアをありがとうございます。
答え2
このマクロは、の各値を受け取りcolumn A
、.txt document
値の名前でを生成し、対応する情報を挿入します。columns B and C
Sub CreateTxt()
'
For Each ce In Range("A1:A" & Cells(Rows.Count, 1).End(xlDown).Row)
Open ce & ".txt" For Output As #1
Write #1, ce.Offset(0, 1) & " " & ce.Offset(0, 2)
Close #1
Next ce
End Sub
4年後、私は最初のSUの質問、つまりVBAの始まりに戻ることにしました。これはより良いものですが、既存のファイルはすべて上書きされます。
Option Explicit
Sub CreateFileEachLine()
Dim myPathTo As String
myPathTo = "C:\Users\path\to\"
Dim myFileSystemObject As Object
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim fileOut As Object
Dim myFileName As String
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 1 To lastRow
If Not IsEmpty(Cells(i, 1)) Then
myFileName = myPathTo & Cells(i, 1) & ".txt"
Set fileOut = myFileSystemObject.CreateTextFile(myFileName)
fileOut.write Cells(i, 2) & " " & Cells(i, 3)
fileOut.Close
End If
Next
Set myFileSystemObject = Nothing
Set fileOut = Nothing
End Sub