Excel VBA 保存到 CVS 文件

Excel VBA 保存到 CVS 文件

我有一个 excel 文件,其中有一个宏,可以将文件保存为 .CSV 文件。我有一个程序可以调用 CSV 文件,但只有我手动打开并保存它时,程序才会识别 .CSV 文件。然后,执行此操作后,程序会识别文件和数据。

我使用 Google Sheets 已有多年,只需下载到 CSV 即可。我想使用 Excel 自动执行此过程,但似乎发现了一些奇怪的问题。

宏运行并将 Excel 工作表保存到 CSV 文件中,打开时文件中的所有内容都是正确的。同样,只有当我手动打开并物理保存它时,调用该文件的程序才会识别它。

我无法弄清楚这个问题。如果有任何意见,我将不胜感激。下面是我正在使用的宏。

Public Sub ExportWorksheetAndSaveAsCSV()

    Dim wbkExport As Workbook
    Dim shtToExport As Worksheet

    Set shtToExport = ThisWorkbook.Worksheets("nqdev")     'Sheet to export as CSV
    Set wbkExport = Application.Workbooks.Add
    shtToExport.Copy Before:=wbkExport.Worksheets(wbkExport.Worksheets.Count)
    Application.DisplayAlerts = False                       'Possibly overwrite without asking
    wbkExport.SaveAs FileName:="H:\My Drive\KML\TOTEliteMembers\NQDev.csv", FileFormat:=xlCSV
    Application.DisplayAlerts = True
    wbkExport.Close SaveChanges:=True

End Sub

答案1

我总是在保存文件时使用此代码,效果很好,您可以将分隔符更改为您想要使用的任何内容。

重要提示:您需要将范围更改为您正在使用的范围,然后更改“分隔符 = |”,只需使用 ; 对于 csv,以及 Open.. 行中的路径

Dim r As Range: Set r = Range("A1:P15") 
Dim buffer As String, delimiter As String, c As Range
Dim i As Long

For Each c In r
    If (i Mod r.Columns.Count) = 0 Then
        If (Len(buffer)) Then delimiter = vbCrLf
    Else
        delimiter = |
    End If
    buffer = buffer & delimiter & """" & CStr(c.Text) & """" '// c.value or c.text to preserve formatting
    i = (i + 1)
Next

Open "D:\YourFolder\Yourname.csv" For Output As #1
Print #1, buffer
Close #1

相关内容