【发布时间】:2017-10-16 10:43:20
【问题描述】:
我有一个将特定范围的行转换为 csv 文件的 vbscript。
我的问题是它也复制空行而不需要蓝色行。如何在复制之前删除这些完整的空行或从复制中排除它们?
我的代码:
Public Sub xlsToCsv()
Const WorkingDir = "C:\Test\"
Const xlCSV = 24
Const xlUp = -4162
Dim fso, SaveName, myFile
Dim objExcel, objWorkbook, wsSource, wsTarget
myFile = "source_file.xlsx"
SaveName = "test.csv"
With CreateObject("Scripting.FilesystemObject")
If Not .FileExists(WorkingDir & myFile) Then
MsgBox "File not found:" & vbCrLf & WorkingDir & myFile, vbInformation, "Script Cancelled"
WScript.Quit
End If
End With
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Open(WorkingDir & myFile)
Set wsSource = objWorkbook.Sheets(1)
Set wsTarget = objWorkbook.Sheets.Add()
With wsTarget
.Cells(1,1).Value = "ID"
.Cells(1,2).Value = "NAME"
.Cells(1,3).Value = "DESC"
End With
With wsSource
.Range("F7", .Range("F" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("A2")
.Range("A7", .Range("A" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("B2")
.Range("E7", .Range("E" & .Rows.Count).End(xlUp)).Copy wsTarget.Range("C2")
End With
objWorkbook.SaveAs WorkingDir & SaveName, xlCSV
objWorkbook.Close True
Set objWorkbook = Nothing
Set objExcel = Nothing
Set fso = Nothing
Set myFolder = Nothing
End Sub
call xlsToCsv()
【问题讨论】:
-
您可以自动筛选空白或蓝色行并将其删除。然后制作你的 CSV。
-
我不仅需要细胞。如果整行为空,我需要删除一行。我可以过滤吗?如何过滤蓝色单元格?
-
试过这个命令 "wsSource.Range("A:F").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete" 以错误代码 800A03EC 结束 - 范围对象的特殊单元格属性不能被分配。
-
它适用于我,没有此错误,请参阅this。请注意,您正在删除整个行,因此如果 A 行中有空白值且 F 中有非空白值,您将丢失 F 中的值
标签: excel vbscript export-to-csv delete-row is-empty