我正在尝试编写VBA宏以将表的内容导出到csv文件。我想只包括某些列而忽略所有其他列。我的代码适用于单个列(在下面的情况下为col_a
),但在尝试导出多个列时失败(例如col_a
和col_c
)。
Sub saveTableToCSV()
Dim tbl As ListObject
Dim csvFilePath As String
Dim fNum As Integer
Dim tblArr
Dim rowArr
Dim csvVal
Set tbl = Worksheets("primary").ListObjects("main")
csvFilePath = "C:\Users\USERNAME\Downloads\testsheet.csv"
Application.DisplayAlerts = False
tblArr = Range("main[[col_a]]").Value
fNum = FreeFile()
Open csvFilePath For Output As #fNum
For i = 1 To UBound(tblArr)
rowArr = Application.Index(tblArr, i, 0)
csvVal = VBA.Join(rowArr, ",")
Print #1, csvVal
Next
Application.DisplayAlerts = False
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
End Sub
我的数据示例如下。表名为“main”,工作表名称为“primary”:
-------------------------
| col_a | col_b | col_c |
-------------------------
| 1 | 2 | 3 |
| 4 | 5 | 6 |
-------------------------
我想要的输出是一个csv文件,如下所示:
a,c
1,3
4,6
有谁可以指出我做错了什么?感谢。
答案 0 :(得分:4)
替换该行
tblArr = Range("main[[col_a]]").Value
这两行
tblArr = tbl.DataBodyRange.Value
tblArr = Application.Index(tblArr, Evaluate("ROW(1:" & UBound(tblArr) & ")"), [{1,3}])