VBA Excel将行导出到.txt中的列

时间:2017-06-08 05:44:40

标签: excel vba

有没有人知道如何在Excel中编写VBA以将多行导出到一列。另外,我想添加"输入"在每个"行"的末尾。理想情况下,这将以.txt格式导出,但即使在同一文档中进行转换,它也会很好。

谢谢!

编辑:例如:我的行包含一些文本/值A1:A5,B1:B5,...我需要所有这些行来移动"移动"例如,在单个列D中。因此,A1将转到D1,A2-D2,A3-D3 ... B1到D7,依此类推。每次结束后(A5,B5,C5,...),我需要一个空单元格(当我将其转换为.txt时,表示输入)。我希望现在有点清楚。

2 个答案:

答案 0 :(得分:0)

您需要添加引用Microsoft ActiveX Data Objects 2.8库

Set ff = CreateObject("ADODB.Stream")
ff.Type = 2
ff.Charset = "utf-8"
ff.Open

For Each Cell In Range("A1:D5").Cells
ff.WriteText Cell.Value & vbNewLine
Next

path_to_save = ActiveWorkbook.Path

ff.SaveToFile path_to_save & "\test.txt", 2

答案 1 :(得分:0)

以下代码将按照您的描述进行操作。使用开头的常量来设置应移动到一个列的行数和行数,由 TargetColNo 指定。每个扫描的色谱柱后都会添加一个空单元格。

如果您希望将其保存到文本文件,则可以使用此代码并添加文本文件以添加结果而不是列。

Sub Rows2OneColumn()
    Const StartColumnNo = 1 ' Start at column A
    Const EndColNo = 3      ' End at column C
    Const StartRowNo = 1    ' Start at row 1
    Const EndRowNo = 5      ' End at row 5

    Const TargetColNo = 5   ' Put result in column E

    Dim source_row As Integer
    Dim source_col As Integer
    Dim target_row As Integer

    target_row = 1

    For source_col = StartColumnNo To EndColNo
        For source_row = StartRowNo To EndRowNo
            Cells(target_row, TargetColNo).Value = Cells(source_row, source_col).Value
            target_row = target_row + 1
        Next
        target_row = target_row + 1 ' leave one cell empty
    Next
End Sub