将一系列单元格中的文本保存到.txt文件中

时间:2016-06-23 17:49:00

标签: excel vba excel-vba

我需要将有效范围的文本保存到.txt文件中。范围是工作表中名为" Reports"的列,行数的变化取决于报告生成的行数。此列F包含电子邮件地址,我们需要通过.txt文件将其上传到另一个系统。在.txt文件中,每个地址将位于不同的行中,而没有其他分隔符。我有这样的代码,但它总是将第一行留在文本文件中,从第二行开始。

Sub Macro_Newsletter()
Dim c As Range
Dim r As Range
Dim output As String

 For Each r In Worksheets("Reports").Range("F2:F10000").Rows
     For Each c In r.Cells
         output = output & vbNewLine & c.Value
     Next c
 Next r
Open "C:\Users\joseph.lin\Desktop\Database\Newsletter" For Output As #1
Print #1, output
Close
End Sub

我只知道如何将它们输出到outlook。请帮我弄清楚使用VBA。

提前致谢!

2 个答案:

答案 0 :(得分:1)

这样可以解决问题:

Sub Macro_Newsletter()

Dim wbText As Workbook
Dim wsReports As Worksheet

Set wbText = Workbooks.Add

Set wsReports = ThisWorkbook.Worksheets("Reports")

With wsReports

    Dim lRow As Long
    lRow = .Range("F" & .Rows.Count).End(xlUp).Row 'get last row of emails

    .Range("F2:F" & lRow).Copy wbText.Sheets(1).Range("A1")

End With

Application.DisplayAlerts = False 'turn off alerts so you don't see messages about compatibility and such

With wbText

    .SaveAs Filename:="C:\Users\joseph.lin\Desktop\Database\Newsletter\Emails.txt", _
        FileFormat:=xlText
    .Close False

End With

Application.DisplayAlerts = True

End Sub

答案 1 :(得分:0)

您可以简单地录制一个宏(开发人员选项卡)并将其保存为csv或.txt文件 - 一旦您有了这个,您可以根据需要进行编辑。如果您可以将其保存到Outlook,则应该能够将其保存到文本文档中。

这是一个相当常见的程序,应该在各种资源中有详细记录。