如果行A列中的特定单元格为NULL,则将工作表的单行导出为.csv

时间:2018-01-30 15:07:58

标签: excel vba excel-vba csv

我只是在挑战一项任务,我只想将Excel工作表的特定行导出到.csv文件中。 如果在A列中的单元格不是NULL /空白/根本没有填充,那么参数将是仅选择导出整行。

我设法导出整个工作表但我无法找到有关如何添加此参数的任何提示。我发现的每一个有希望的线程最终都不会导出空白单元格。

已经尝试优化我在搜索过程中找到的以下代码,因此它适合我的任务,但我很难失败...... 非常感谢帮助: - )

Sub ExportCSV()


Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim blnAnfuehrungszeichen As Boolean

strMappenpfad = ActiveWorkbook.FullName

strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub

strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
If strTrennzeichen = "" Then Exit Sub

If MsgBox("Sollen die Werte in Anführungszeichen exportiert werden?", vbQuestion + vbYesNo, "CSV-Export") = vbYes Then
    blnAnfuehrungszeichen = True
Else
    blnAnfuehrungszeichen = False
End If

Set Bereich = ActiveSheet.UsedRange

Open strDateiname For Output As #1

For Each Zeile In Bereich.Rows
    For Each Zelle In Zeile.Cells
        If blnAnfuehrungszeichen = True Then
            strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
        Else
            strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
        End If
    Next
    If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
    Print #1, strTemp
    strTemp = ""
Next

  Close #1
  Set Bereich = Nothing
  MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname

End Sub

1 个答案:

答案 0 :(得分:0)

检查每行中的第一个单元格是否为空

For Each zeile In Bereich.Rows
    If Not zeile.Cells(1, 1).Value = "" Then
        For Each Zelle In zeile.Cells
            If blnAnfuehrungszeichen = True Then
                strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
            Else
                strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
            End If
        Next
        If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
        Print #1, strTemp
        strTemp = ""
    End If
Next