Excel 无法对导出为CSV的表应用VBA自动筛选
我有一个表,表中的行的单元格为“空白”?!所以我尝试以下方法来过滤这些行Excel 无法对导出为CSV的表应用VBA自动筛选,excel,vba,Excel,Vba,我有一个表,表中的行的单元格为“空白”?!所以我尝试以下方法来过滤这些行 Set tbl = Worksheets("FOR EXPORT").ListObjects("TableName") 'SET AUTOFILTER tbl.Range.AutoFilter Field:=3, Criteria1:="<>" 而不是我看到的已应用于工作表的筛选表 整个潜艇是 Sub saveTableToCSV() Dim tbl As ListObject Dim csvFilePat
Set tbl = Worksheets("FOR EXPORT").ListObjects("TableName")
'SET AUTOFILTER
tbl.Range.AutoFilter Field:=3, Criteria1:="<>"
而不是我看到的已应用于工作表的筛选表
整个潜艇是
Sub saveTableToCSV()
Dim tbl As ListObject
Dim csvFilePath As String
Dim fNum As Integer
Dim tblArr As Variant
Dim rowArr
Dim csvVal
Set tbl = Worksheets("FOR EXPORT").ListObjects("TableName")
'SET AUTOFILTER
tbl.Range.AutoFilter Field:=3, Criteria1:="<>"
'SET PATH
csvFilePath = "C:\Users\FatherNick\Desktop\CSVFile.csv"
'COPY TABLE RANGE TO ARRAY
tblArr = tbl.Range.Value
'SET FILE OUTPUT
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
'RESET FILTER
'tbl.AutoFilter.ShowAllData
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
End Sub
子存储表tocsv()
作为ListObject的Dim tbl
将csvFilePath设置为字符串
作为整数的Dim fNum
Dim tblArr作为变体
暗色罗瓦尔
暗csvVal
设置tbl=工作表(“用于导出”)。列表对象(“表名”)
'设置自动筛选
tbl.Range.AutoFilter字段:=3,标准1:=“”
'设置路径
csvFilePath=“C:\Users\FatherNick\Desktop\CSVFile.csv”
'将表范围复制到数组
tblArr=tbl.Range.Value
'设置文件输出
fNum=FreeFile()
打开csvFilePath,输出为#fNum
对于i=1至UBound(tblArr)
rowArr=Application.Index(tblArr,i,0)
csvVal=VBA.Join(rowArr,“;”)
打印#1,csvVal
下一个
'重置过滤器
'tbl.AutoFilter.ShowAllData
关闭#fNum
设置tblArr=无
设置rowArr=Nothing
设置csvVal=无
端接头
如何传递数组以过滤表而不是整个表?尝试下面的代码(代码注释中的解释):
除了错误或像#REF!(参考)这样的特定错误之外,是否可以将所有内容都放入标准中@Nikos您可以使用“tbl.range.SpecialCells(xlErrors)”将范围设置为错误,您可以阅读更多关于它的信息
Sub saveTableToCSV()
Dim tbl As ListObject
Dim csvFilePath As String
Dim fNum As Integer
Dim tblArr As Variant
Dim rowArr
Dim csvVal
Set tbl = Worksheets("FOR EXPORT").ListObjects("TableName")
'SET AUTOFILTER
tbl.Range.AutoFilter Field:=3, Criteria1:="<>"
'SET PATH
csvFilePath = "C:\Users\FatherNick\Desktop\CSVFile.csv"
'COPY TABLE RANGE TO ARRAY
tblArr = tbl.Range.Value
'SET FILE OUTPUT
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
'RESET FILTER
'tbl.AutoFilter.ShowAllData
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
End Sub
Dim VisRng As Range
' set the new Range object to the visible cells of `tbl.Range`
Set VisRng = tbl.Range.SpecialCells(xlCellTypeVisible)
' copy only the visible cells in range to array
tblArr = VisRng.Value