【问题标题】:Save text in a range of cells to .txt file将一系列单元格中的文本保存到 .txt 文件
【发布时间】:2019-12-31 13:41:45
【问题描述】:

我需要将活动范围的文本保存到 .txt 文件中。

范围是工作表中名为“报告”的列 F。行数取决于报告生成的行数。此 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 来做到这一点。

【问题讨论】:

  • 你有没有尝试过?如果是这样,请提供代码,查看tourhow to ask。 StackOverflow 不是“我们为您编码”的服务提供商。Introduction to VBA
  • 检查更新@Introduction to VBA

标签: excel vba


【解决方案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

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

    With wbText

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

    End With

    Application.DisplayAlerts = True

End Sub

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多