如何使用 vba 创建和写入文本文件?
要使用 VBA 代码创建文本,必须使用 CreateTextFile 方法。此方法允许您设置要创建它的位置。此方法具有语法,您可以在其中指定是否要覆盖该位置的文件,并指定该文件是创建为 Unicode 还是 ASCII 文件。
使用VBA创建文本文件
使用以下步骤:
- 首先,您需要使用 FileSystemObject 或文件夹对象来与该方法一起使用。
- 之后,您需要使用 CreateTextFile 方法创建另一个对象。
- 在此代码中,如果文件夹中已存在同名文件,我们使用 TRUE 进行覆盖。
- 最后,当您运行此宏时,请在文件夹中创建一个新的文本文件,如下所示。
Sub create_text_file() 'object to use as folder Dim fld As Object Set fld = CreateObject("Scripting.FileSystemObject") 'using create text file method Dim myFile As Object Set myFile = fld.CreateTextFile("C:UsersDellDesktopmyFoldermyTextFile.txt", True) End Sub
CreateTextFile 方法的语法
CreateTextFile (filename, [ overwrite, [ unicode ]])
- 文件名:要创建的文件的路径和名称。
- overwrite:布尔值,定义是否要覆盖文件(如果已存在)(可选)。
- unicode:布尔值,用于定义文件是否创建为 Unicode 文件或 ASCII 文件(可选)。
使用 VBA 写入文本文件
您可以使用两个语句将数据写入文本文件:
- 写入:使用此语句,您可以将数据写入文本文件,其中值之间有逗号,字符串周围有引号,日期周围有 # 符号。
- 打印:使用此语句,您可以将数据写入文本文件,其外观与 Excel 电子表格中的外观完全相同。
现在我们将查看这两个语句的示例,并了解如何编写完整的代码来写入文本文件。但在此之前,您需要了解一些术语才能按照您想要的方式编写代码。
- 对于输出:当您想要在文本文件中写入数据或修改数据时,可以使用此命令。
- 对于输入:使用此命令您可以从文本中提取数据,但您将无法修改数据并将数据添加到文件中。
- 添加:此命令可帮助您在文本文件的底部添加新数据。
- FreeFile:您可以使用它来设置一个未用于您要使用的文本文件的文件编号,以便您可以参考它。
现在让我们编写一段代码将数据输入到文本文件中。
- 首先,您需要声明要在代码中使用的变量。
- 之后,您需要定义需要写入文本文件的范围。并通过将范围内的单元格数量设置为变量来将其用作循环的计数器。
- 接下来,您需要设置要添加数据的文本文件的地址。
- 从那里,您需要向变量声明“FreeFile”命令以获取文件号。
- 现在您需要使用“输出”命令创建,因为您需要将数据添加到文件中。
- 最后,需要使用“For Next”循环来一一获取范围值并将其添加到文件中。
- 此外,在向文本文件添加数据后,您需要使用 close 命令关闭该文本文件。
- 最终,当您运行此宏时,它将 A1:A13 范围内的数据添加到您在提到的路径中保存的文本文件中。
注意:请确保根据您系统中的路径更改代码中文本文件的路径。
Option Explicit Sub data_to_text_file() 'variables that you need to use in the code Dim TextFile As Integer Dim iCol As Integer Dim myRange As Range Dim cVal As Range Dim i As Integer Dim myFile As String 'define the range that you want to write Set myRange = Range("A1:A13") iCol = myRange.Count 'path to the text file (MAKE SURE TO CHANGE IT) myFile = "C:UsersDellDesktopNewFoldertextfile.txt" 'define FreeFile to the variable file number TextFile = FreeFile 'using append command to add text to the end of the file Open myFile For Output As TextFile 'loop to add data to the text file For i = 1 To iCol Print #TextFile, Cells(i, 1), Print #TextFile, Cells(i, 2) Next i 'close command to close the text file after adding data Close #TextFile End Sub