【问题标题】:VBA Export and save to CSV issuesVBA 导出并保存到 CSV 问题
【发布时间】:2018-01-21 22:27:36
【问题描述】:

在网上找到了下面的代码,虽然当我为日期运行宏时有点奇怪,因为我的日期将从: [DD/MM/YYYY] 到 [MM/DD/YYYY]

示例: 2017 年 7 月 31 日至 2017 年 7 月 31 日。

任何能够提供帮助的人,我都希望保留 [DD/MM/YYYY]。

参考以下:

Dim strName As String
Dim filepath As String

Application.ScreenUpdating = False

strName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & " " & ActiveSheet.Name & ".csv"

ActiveSheet.Copy    'copy the sheet as a new workbook
ActiveWorkbook.SaveAs Filename:=strName, FileFormat:=xlCSV
ActiveWorkbook.Close SaveChanges:=False

Application.ScreenUpdating = True

MsgBox "File has been Created and Saved as:  " & vbCr & strName, , "Copy & Save Report"

谢谢,

【问题讨论】:

  • 我认为原始的 excel 已将格式设置为 [DD/MM/YYYY]。 CSV 不会保存“格式”,它会使用您 PC 的区域设置格式。
  • 对不起,我想避免它并保持为 [DD/MM/YYYY]
  • 您可以尝试将列显式格式化为您的首选日期格式
  • 如果接收端允许,考虑选择YYYY-MM-DD日期格式。它是 ISO 标准,在全球范围内都清晰可读,日期 2017-03-05 清晰易懂,与 05/03/2017(5 月或 3 月)不同。放弃尴尬的本地日期格式,考虑走向国际。

标签: excel vba date formatting


【解决方案1】:

根据您的本地语言设置(在控制面板中指定),以下应该可以工作:

ActiveWorkbook.SaveAs Filename:=strName, FileFormat:=xlCSV, Local:=True

最好通过指定SaveAs 方法的TextCodepage 参数来使用它。 但是,根据MSDN reference 的说法,Excel 的所有语言都会忽略此参数。

以前的question on SO addresses this,,建议改用FileFormat:=xlUnicodeText,然后将扩展名设置为.csv,即:

ActiveWorkbook.SaveAs Filename:=strName & ".csv", FileFormat:=xlUnicodeText

但是,在测试您的场景时,这似乎对我不起作用。

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2010-12-20
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多