gpt4 book ai didi

vba - 从表中导出为 CSV、非连续列

转载 作者:行者123 更新时间:2023-12-04 21:32:11 26 4
gpt4 key购买 nike

我正在尝试编写一个 VBA 宏来将表的内容导出到 csv 文件。我想只包括某些列而忽略所有其他列。我的代码适用于单个列(在下面的示例中为 col_a ),但在尝试导出多个列时失败(例如 col_acol_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}])

关于vba - 从表中导出为 CSV、非连续列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49415784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com