VBA代码将工作表保存到。生成空文件的 CSV 文件

VBA Code to save sheet to .CSV file producing empty files

提问人:user22571955 提问时间:9/16/2023 更新时间:9/16/2023 访问量:43

问:

我有现有的代码要创建.CSV 文件,但很多时候,.CSV文件最终为空,但VBA代码运行没有问题。我正在尝试找到修复程序或更好的创建方法。Excel 工作表中的 CSV 文件。

' Create .CSV assumption files
Public Sub Create_File(ByVal fldr As String, ws As String, fname As String, cnn As ADODB.Connection)
    Dim rs As ADODB.Recordset
    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txtFile = fso.CreateTextFile(fldr & fname & ".csv", True)

    Set rs = New ADODB.Recordset
    rs.Open "select * from [" & ws & "$];", cnn

    'determine what the field names are
    strFields = ""
    For z = 0 To rs.Fields.Count - 1
        strFields = strFields & rs.Fields(z).Name & ","
    Next z

    'last field has a "," after so remove it
    strFields = Left(strFields, Len(strFields) - 1)

    txtFile.WriteLine strFields

    If rs.EOF And rs.BOF Then
    Else
        Do While Not rs.EOF
            txtFile.Write rs.GetString(adClipString, , ",", vbCrLf, "")
        Loop
    End If

    rs.Close

    Set rs = Nothing
End Sub
Excel VBA CSV ADODB

评论

0赞 taller 9/16/2023
请尝试在之前添加。顺便说一句,您的代码的目标是将工作表转换为 csv,并在标题上稍作更改。[工作簿]。SaveAs 是一种整洁的方法。stackoverflow.com/questions/77100468/......rs.CursorLocation = adUseClientrs.Open
1赞 Tim Williams 9/16/2023
当 CSV 为空时,记录集是否也为空?
0赞 user10186832 9/16/2023
变量是什么?它是否需要是有效的工作表名称并且工作表具有焦点?如果没有,您将在哪里看到错误消息?ws
0赞 user22571955 9/18/2023
谢谢大家。是的,这很奇怪,因为它试图从中提取的工作表肯定是填充的,但我认为 rs 是空的。某些东西导致VBA无法从工作表中提取数据。Taller_ExcelHome,我今天将尝试您的解决方案,看看它是如何工作的。
0赞 user10186832 9/28/2023
您可以在打开记录集后进行尝试。rs.MoveFirst

答: 暂无答案