我有一个 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