2016-06-09 104 views
2

我想从Excel创建多个csv文件。我有一个vba,每个选项卡创建一个csv文件,但输出中有空白。从excel创建CSV文件时删除空白单元

我有6列,该CSV文件的回报是有我忽略空白单元格,所以我没有空白逗号如路“”

这里是我使用的代码:

Sub SaveWorksheetsAsCsv() 
Dim WS As Excel.Worksheet 
Dim SaveToDirectory As String 
Dim CurrentWorkbook As String 
Dim CurrentFormat As Long 
CurrentWorkbook = ThisWorkbook.FullName 
CurrentFormat = ThisWorkbook.FileFormat 
' Store current details for the workbook 
SaveToDirectory = "H:\test\" 
For Each WS In ThisWorkbook.Worksheet 
Sheets(WS.Name).Copy 
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & "-" & WS.Name & ".csv", FileFormat:=xlCSV 
ActiveWorkbook.Close savechanges:=False 
ThisWorkbook.Activate 
Next 
Application.DisplayAlerts = False 
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat 
Application.DisplayAlerts = True 
' Temporarily turn alerts off to prevent the user being prompted 
' about overwriting the original file. 
End Sub 

感谢乔

+0

如果您只删除一些单元格,您的csv将会毫无意义,因为来自一列的数据将以多列结尾。但是,如果这是您想要的,您可以删除整列。 – pintxo

+0

我明白你的意思,所以如果我只想要某些列用于CSV将可能?例如,我需要列A,B和F的所有内容,但其余部分并非真正需要。 –

+0

你想要逗号....这是你的数据保持有组织的唯一方式,就像在csv(逗号分隔值)文件中提到的@ pintxo一样。 – timthebomb

回答

-1

空白单元格可以Selection.SpecialCells(xlCellTypeBlanks).Select可以找到,但我没有看到你选择的任何数据。

如果您只需要某些列,我建议您在复制到新工作表后删除其他列。加入这一行你Copy后:

ActiveSheet.Columns(X).Delete 

为你做这个要删除的每个列与列的名称,即替换X。 “C”。

+0

我是新来的,所以很抱歉,因为我不是最好的VBA。 我想限制CSV文件的输出量到我需要的相关数据。 我需要CSV文件中列A,B和F以外的信息,但不需要其他列。 –

+0

Np,我会在我的答案中详细说明。我想我现在得到你要去的地方,你的措词不清楚。 –

+0

认为这应该做到这一点,请让我知道。 –