【发布时间】:2019-10-22 02:54:26
【问题描述】:
我在 MrExcel 上从 TommyGun 借用了以下代码,但遇到了以下困难:
在生成文件的末尾,它会重复下面行中的分隔符,即使它们之间没有数据;
必须根据我们所处的月份动态生成文件名,但 'Const CSVFile As String' 不接受 Format(date, "mmm-yy") 作为字符串元素,例如。
Sub Append2CSV()
Dim tmpCSV As String 'string to hold the CSV info
Dim f As Integer
Const CSVFile As String = "C:\VBA Code\test.csv" 'replace with your filename
f = FreeFile
Open CSVFile For Append As #f
tmpCSV = Range2CSV(Range("A2:H3"))
Print #f, tmpCSV
Close #f
End Sub
Function Range2CSV(list) As String
Dim tmp As String
Dim cr As Long
Dim r As Range
If TypeName(list) = "Range" Then
cr = 1
For Each r In list.Cells
If r.Row = cr Then
If tmp = vbNullString Then
tmp = r.Value
Else
tmp = tmp & "," & r.Value
End If
Else
cr = cr + 1
If tmp = vbNullString Then
tmp = r.Value
Else
tmp = tmp & Chr(10) & r.Value
End If
End If
Next
End If
Range2CSV = tmp
End Function
请考虑以下几点: 如果文件不存在,则使用标题(第 1 行)创建它。如果是,则追加 (range"A2:S" & lastorw)
【问题讨论】:
-
不能用动态表达式定义常量,所以试试
Dim CsvFile As String,然后赋值CsvFile = Format(Now, "mmm-yy")