我正在尝试编写一个 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
谁能指出我做错了什么?谢谢。
替换那条线
tblArr = Range("main[[col_a]]").Value
用这两行
tblArr = tbl.DataBodyRange.Value
tblArr = Application.Index(tblArr, Evaluate("ROW(1:" & UBound(tblArr) & ")"), [{1,3}])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句