这一节基本没用,除了最后一个例子:记录文件的打开和关闭时间。
'Open 文件名 for 打开方式 as 文件编号
'打开方式:
'Input :只能读,不能写
'Append:允许读也允许写,如果存在文件就追加记录,如果没有就新建文件
'Output:可以读,也可以写。但总会把原来的同名文件删除,再新建一个
'读取txt文件内容方法
'input:从文件中读取指定数量的字符。
'Input #:把数据读出放在变量里,变量用逗号分隔
'Line Input #:取出完整的一行
'向文件中写入数据
'write #:向文件中写入值,值用引号引起来。如果想在同一行中继续写入,可以在前一次写时结尾添加“;”号
'Print #:向文件中写入值,如果想在同一行中继续写入,可以在前一次写时结尾添加“;”
'字符的间隔符
'Spc(n)表示输入n个空字符
'一、用Print写入
'1 分行输入
Sub t1()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, "产品名称"
Print #1, Date
Close #1
End Sub
'2 在同一行输入
Sub t2()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, "产品名称";
Print #1, "A产品"
Close #1
End Sub
'3 输入时添加空格符
Sub t3()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, "产品名称"; Spc(5);
Print #1, "A产品"
Close #1
End Sub
'4 在指定的列数输入
Sub t4()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, "产品名称"; Tab(8); '在第10列输入下面的,如果为空则插入到下一个打印的位置
Print #1, "A产品"
Close #1
End Sub
'二、用Write写入
Sub t5()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Write #1, "产品名称"
Write #1, 5
Close #1
End Sub
Sub t6()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Write #1, "产品名称";
Write #1, 5
Close #1
End Sub
Sub t7()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Write #1, "产品名称"; 5 '这里逗号等同于"; "(分号)"
Close #1
End Sub
'三、Print和Write区别
'1 写到到txt文件后,字符会添加“,”(逗号)
'2 除文本外,日期、逻辑值输入结果不一样,两边会加#号
Sub t8()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, Date; 1 = 1; Null
Write #1, Date; 1 = 1, Null
Close #1
End Sub
'四 不同类型数值的输入的
'在用print写入数据时
'1 日期后要加空格
'2 数字前后都加空格
'3 字符前后均不加空格
Sub t9()
Dim f As String
f = ThisWorkbook.path & "\a.txt"
Open f For Output As #1
Print #1, Date; 12
Print #1, Date; "ABC"
Print #1, Date; "我爱你"
Print #1, Date; Date
Print #1, "我爱你"; 12
Print #1, "我爱你"; "abc"
Print #1, "我爱你"; Date
Print #1, "我爱你"; "abc"
Print #1, 12; "abc"
Print #1, 12; "我爱你"
Print #1, 12; 123
Print #1, 12; "123"
Close #1
End Sub
'将sheet2表中的数据写入到文本文本中
Sub 转换成txt文件()
Dim f, arr, x, y, k
f = ThisWorkbook.path & "\ruku.txt"
arr = Sheets("sheet2").Range("a1:e6")
Open f For Output As #1
For x = 1 To UBound(arr)
For y = 1 To UBound(arr, 2)
If y = UBound(arr, 2) Then
Print #1, arr(x, y)
Else
If VBA.IsNumeric(arr(x, y)) Then
k = 12 - Len(arr(x, y)) - 2
ElseIf arr(x, y) Like "[A-Z]" Or VBA.IsDate(arr(x, y)) Then
k = 12 - Len(arr(x, y)) - 1
Else
k = 12 - Len(arr(x, y)) * 2
End If
Print #1, arr(x, y); Spc(k);
End If
Next y
k = 0
Next x
Close #1
End Sub
'示例2 记录打开和关闭时间
' 详见thisworkbook事件
代码:记录文件的打开、关闭时间
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim f As String
f = ThisWorkbook.path & "\filetime.txt"
Open f For Append As #1
Print #1, "Close: "; Now
Close #1
End Sub
Private Sub Workbook_Open()
Dim f As String
f = ThisWorkbook.path & "\filetime.txt"
Open f For Append As #1
Print #1, "Open: "; Now
Close #1
End Sub