如何将Excel工作表的特定列数据保存为.txt文件,包括每个单元格内容中的换行符

时间:2015-01-01 08:43:20

标签: excel excel-vba vba

我对VBA很新。我有一个要求,我需要将数据保存在Excel工作表的特定列(假设使用C列数据的范围)到.txt文件。经过一些网络搜索,我得到了VBA代码,但问题是,如果一个单元格(比如Cell(1,3))有多行数据,如下所示

细胞(1,3):

我得到了VBA,但我有一个问题。

我使用的VBA将单元格(1,3)内容保存在一行中 - '我得到了vba但是我有一个问题帮助我'我不希望它在一行中。< / p>

我的要求非常简单。

  1. 我在工作表中有一个activex按钮。

  2. 单击按钮时,C列中的数据必须保存为.txt文件,包括换行符。所以如果cell(1,3)有4行而cell(2,3)有2行,那么.txt文件应该有6行。 .txt文件应该完全复制我的C列。

  3. 3.此文本文件必须保存到“C”\ vbacodes \“path。

    以下是我在互联网上找到的代码

    Private Sub CommandButton1_Click()
    'Update 20130913Dim wb As Workbook
    Dim saveFile As String
    Dim WorkRng As Range
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set wb = Application.Workbooks.Add
    WorkRng.Copy
    wb.Worksheets(1).Paste
    saveFile = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt), *.txt")
    wb.SaveAs Filename:=saveFile, FileFormat:=xlText, CreateBackup:=False
    wb.Close
    Application.CutCopyMode = False
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub
    

1 个答案:

答案 0 :(得分:5)

首先更改路径和文件名以符合您的要求,然后将此宏指定给按钮:

Sub TextFileMaker()

    Dim MyFilePath As String, MyFileName As String
    Dim N As Long, nFirstRow As Long, nLastrow As Long

    MyFilePath = "C:\TestFolder\"
    MyFileName = "whatever"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile(MyFilePath & MyFileName & ".txt", True)
    nLastrow = Cells(Rows.Count, "C").End(xlUp).Row
    nFirstRow = 1

    For N = nFirstRow To nLastrow
        t = Replace(Cells(N, "C").Text, Chr(10), vbCrLf)
        a.WriteLine (t)
    Next
    a.Close

End Sub