尝试将Excel中的范围导出为CSV,仅包含包含数据的单元格

时间:2016-08-01 15:25:43

标签: excel excel-vba csv vba

下午好,

我正在为我的同事构建一个excel表,用于生成CSV文件。我需要获得带有标题行的输出,然后是表格中的所有数据。它不会超过40行,但可能会减少行数。我目前在工作表中有很多公式为我的同事做了很多工作,例如从输入数据生成用户名/等。我需要让他们点击一个按钮并在另一端获取CSV文件。我目前的问题如下。

1。)我的CSV在每个字段中都包含双引号,即使逗号不在输入数据中。我需要阻止这个,因为我们正在提供这些csv文件的程序不喜欢双引号AT ALL。是的,我知道你可以在记事本中打开它并替换所有删除它们但我试图建立一个单击解决方案,因为一些使用它的人不是非常精通技术。

2。)我的宏目前正在导出所有四十行数据。我需要它只导出包含数据的行。从理论上讲,建立的公式应该没有“部分”行,只有整行或空行。

3.)生成CSV文件时根本不附加文件类型,我需要它来指定.txt。 filetype如果可能的话,我们正在提供的程序非常挑剔。

Sub CommandButton1_Click()
Dim filename As String
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer

filename = InputBox("Please enter file name", "Save as CSV", "CSV_" & Format(Now, "DD_MM_yyyy"))
myFile = Application.DefaultFilePath & filename

Set rng = Range("A1:J41")

Open myFile For Output As #1

    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count

            cellValue = rng.Cells(i, j).Value

                If j = rng.Columns.Count Then
                    Write #1, cellValue
                        Else
                    Write #1, cellValue,
                End If
        Next j
    Next i

Close #1

End Sub

1 个答案:

答案 0 :(得分:0)

这是您的代码必须具有的外观。不幸的是,我无法摆脱双引号,也许其他人对此有所了解。

Sub csvExport()
Dim filename As String
Dim myFile As String, cellValue As Variant, i As Integer, j As Integer
Dim ws As Worksheet

filename = "\" & InputBox("Please enter file name", "Save as CSV", "CSV_" & Format(Now, "DD_MM_yyyy")) & ".txt"
myFile = Application.DefaultFilePath & filename

    Set ws = Worksheets("YOURSHEETNAME")

    With ws

    Open myFile For Output As #1

    For i = 1 To .UsedRange.Rows.Count
        For j = 1 To .UsedRange.Columns.Count

            cellValue = .Cells(i, j).Value
                If j = .UsedRange.Columns.Count Then
                    Write #1, cellValue
                        Else
                    Write #1, cellValue,
                End If
        Next j
    Next i

Close #1
End With

End Sub
相关问题