Excel - Cria um arquivo de texto com o nome de uma célula que contém outros dados da célula

2

Estou tentando criar um .txt file para cada valor em column A contendo os valores correspondentes em columns B and C

    
por Raystafarian 07.02.2012 / 22:00

2 respostas

1

Quanto mais eu olhava isso, mais eu achava que era uma pequena macro útil. Para impedi-lo de processar linhas em branco (e bloquear meu Excel), reescrevi o código para criar apenas um arquivo enquanto houver dados disponíveis. Além disso, o uso de print em vez de write cria texto sem as cotações. Aqui está o que eu usei para realizar a mesma coisa.

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

Sinta-se à vontade para usar e modificar como quiser. Obrigado pela ótima ideia.

    
por 08.02.2012 / 15:41
0

Esta macro levará cada valor em column A , produzirá um .txt document no nome do valor e insere as informações correspondentes de 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

Quatro anos depois, decidi voltar à minha primeira pergunta sobre o SU - meus primórdios na VBA. Isso é melhor, mas irá sobrescrever qualquer arquivo que já exista

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
    
por 07.02.2012 / 22:01