- VBA 教程
- VBA - 首页
- VBA - 概述
- VBA - Excel 宏
- VBA - Excel 术语
- VBA - 宏注释
- VBA - 消息框
- VBA - 输入框
- VBA - 变量
- VBA - 常量
- VBA - 运算符
- VBA - 决策
- VBA - 循环
- VBA - 字符串
- VBA - 日期和时间
- VBA - 数组
- VBA - 函数
- VBA - 子过程
- VBA - 事件
- VBA - 错误处理
- VBA - Excel 对象
- VBA - 文本文件
- VBA - 图表编程
- VBA - 用户窗体
- VBA 有用资源
- VBA - 快速指南
- VBA - 有用资源
- VBA - 讨论
VBA - 文本文件
您还可以使用 VBA 读取 Excel 文件并将单元格内容写入文本文件。VBA 允许用户使用两种方法处理文本文件:
- 文件系统对象
- 使用 Write 命令
文件系统对象 (FSO)
顾名思义,FSO 帮助开发人员处理驱动器、文件夹和文件。在本节中,我们将讨论如何使用 FSO。
序号 | 对象类型和描述 |
---|---|
1 |
驱动器 驱动器是一个对象。包含允许您收集有关连接到系统上的驱动器信息的方法和属性。 |
2 |
驱动器列表 驱动器列表是一个集合。它提供连接到系统的驱动器列表,无论是物理的还是逻辑的。 |
3 |
文件 文件是一个对象。它包含允许开发人员创建、删除或移动文件的方法和属性。 |
4 |
文件列表 文件列表是一个集合。它提供文件夹中包含的所有文件的列表。 |
5 |
文件夹 文件夹是一个对象。它提供允许开发人员创建、删除或移动文件夹的方法和属性。 |
6 |
文件夹列表 文件夹列表是一个集合。它提供文件夹内所有文件夹的列表。 |
7 |
文本流 文本流是一个对象。它使开发人员能够读取和写入文本文件。 |
驱动器
驱动器是一个对象,它提供对特定磁盘驱动器或网络共享的属性的访问。驱动器对象支持以下属性:
- 可用空间
- 驱动器盘符
- 驱动器类型
- 文件系统
- 空闲空间
- 就绪状态
- 路径
- 根文件夹
- 序列号
- 共享名称
- 总大小
- 卷标
示例
步骤 1 - 在继续使用 FSO 进行脚本编写之前,我们应该启用 Microsoft Scripting Runtime。为此,请导航到“工具”→“引用”,如下面的屏幕截图所示。
步骤 2 - 添加“Microsoft Scripting RunTime”并单击“确定”。
步骤 3 - 添加要写入文本文件中的数据并添加一个命令按钮。
步骤 4 - 现在是时候编写脚本了。
Private Sub fn_write_to_text_Click() Dim FilePath As String Dim CellData As String Dim LastCol As Long Dim LastRow As Long Dim fso As FileSystemObject Set fso = New FileSystemObject Dim stream As TextStream LastCol = ActiveSheet.UsedRange.Columns.Count LastRow = ActiveSheet.UsedRange.Rows.Count ' Create a TextStream. Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True) CellData = "" For i = 1 To LastRow For j = 1 To LastCol CellData = Trim(ActiveCell(i, j).Value) stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData Next j Next i stream.Close MsgBox ("Job Done") End Sub
输出
执行脚本时,请确保将光标置于工作表的第一个单元格中。Support.log 文件在“D:\Try”下创建,如下面的屏幕截图所示。
文件内容如下面的屏幕截图所示。
Write 命令
与 FSO 不同,我们不需要添加任何引用,但是,我们将无法处理驱动器、文件和文件夹。我们只能将流添加到文本文件。
示例
Private Sub fn_write_to_text_Click() Dim FilePath As String Dim CellData As String Dim LastCol As Long Dim LastRow As Long LastCol = ActiveSheet.UsedRange.Columns.Count LastRow = ActiveSheet.UsedRange.Rows.Count FilePath = "D:\Try\write.txt" Open FilePath For Output As #2 CellData = "" For i = 1 To LastRow For j = 1 To LastCol CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value) Write #2, CellData Next j Next i Close #2 MsgBox ("Job Done") End Sub
输出
执行脚本后,将在“D:\Try”位置创建“write.txt”文件,如下面的屏幕截图所示。
文件内容如下面的屏幕截图所示。