【问题标题】:Excel VBA - Saving file changes date formatExcel VBA - 保存文件更改日期格式
【发布时间】:2015-05-05 08:42:47
【问题描述】:

我正在尝试通过在 Excel 中使用宏将公式向下拖动到我的主数据需要,然后将每个工作表保存为 prn 文件来自动化我们必须尽可能顺利的流程。

问题是在有日期的地方,它会将格式保存为美国日期,所以当我们将数据上传到我们的系统时,它要么是错误的,要么会导致错误(例如,今天我试图上传 30/04/2015 但我的系统说没有这个日期。

当我在运行宏之前和之后在单元格上使用 MONTH() 时,它会给出正确的月份,但它保存的 prn 文件的日期存储错误(上面显示为 2015 年 4 月 30 日,而我的 Excel 表仍然显示 30/4/2015。

我尝试以美国格式存储日期,但它只是将格式保留为美国格式

以下是我到目前为止所写内容的 MWE,如果有人可以帮助确保日期以英国格式存储,我们将不胜感激。

Sub Uploads()

Dim wb As Workbook, wk As Worksheet, rng As Range, num As Long, i As Long, str As String
Set wb = ThisWorkbook
i = 0
num = wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row - 7

For Each wk In wb.Worksheets
    wk.Range("A2:Z2").AutoFill Destination:=wk.Range("A2:Z" & num), Type:=xlFillDefault
    wk.Columns.AutoFit
    wk.SaveAs Filename:="H:\Finance\Uploads\CBCS\Upload Master\CBCS (" & i & ") " & Format(Now, "dd-mm-yyyy") & ".prn", FileFormat:=xlTextPrinter
    i = i + 1
Next wk

End Sub

【问题讨论】:

    标签: vba date excel


    【解决方案1】:

    如果您在导出之前手动设置单元格的数字格式,它应该可以工作。

    wk.Range("A2:Z" & num).NumberFormat = "d/M/yyyy" 
    

    【讨论】:

    • 手动另存为即使没有此设置也可以工作,但由于某种原因(错误?)在 VBA 中,除非您设置数字格式,否则无论您的语言环境是什么,它都采用默认的美国格式。
    【解决方案2】:

    先尝试调整您的系统设置...我过去的经验是,如果不同的 PC 有不同的设置,可能会影响他们查看日期的方式以及宏的反应方式...

    【讨论】:

    • 我认为语言环境在这种情况下没有帮助。
    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多