gpt4 book ai didi

excel - vba打开csv文件困惑的日期格式

转载 作者:行者123 更新时间:2023-12-04 21:15:20 25 4
gpt4 key购买 nike

我正在使用 foo.xlsm 中的 vba文件,打开 bar.csv文件,然后将其复制到 foo.xlsm文件。然而,令人惊讶的是,它会弄乱日期格式,有时会识别为 mm/dd/yyyy , 有时 dd/mm/yyyy .

csv 文件有这样一行:

"USD/MYR","TRF:1234","20/04/2017","01/06/2017","11/09/2017","01/06/2017"

, 所以所有日期都在 dd/mm/yyyy格式。

如果我打开 bar.csv手动文件,4个日期显示正确,如
20/4/2017   1/6/2017    11/9/2017   1/6/2017

但是,如果来自 foo.xlsm使用vba打开 bar.csv文件,原来是
20/04/2017  6/1/2017    9/11/2017   6/1/2017

,因此后来复制到 foo.xlsm日期错误。

似乎 excel 试图将日期解释为 mm/dd/yyyy首先,只有当它不起作用时,它才会将其读取为 dd/mm/yyyy .

vba 代码是这样的:
Sub import_via_excel(source_file As String, source_sheet As String, target_sheet As String)
On Error GoTo ErrHandler
Application.ScreenUpdating = False

Set wbThis = ActiveWorkbook
Dim dest_sheet As Worksheet
Set dest_sheet = wbThis.Sheets(target_sheet)

Dim src_book As Workbook
Set src_book = Workbooks.Open(source_file, True, True) ' Open in "ReadOnly" mode
Dim src_sheet As Worksheet
Set src_sheet = src_book.Sheets(source_sheet)
src_sheet.Activate
last_col = ActiveSheet.UsedRange.Columns.Count
last_row = ActiveSheet.UsedRange.Rows.Count

Dim row As Integer ' row counter.
Dim col As Integer ' col counter.
Dim src_data As String
For row = 1 To last_row
For col = 1 To last_col
src_data = src_sheet.Cells(row, col).Value
dest_sheet.Cells(row, col).Value = src_data
Next col
Next row

src_book.Close False ' close file without saving (FALSE)
Set src_book = Nothing

wbThis.Activate

ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

可能出了什么问题?

最佳答案

如果您使用 Workbooks.Open要打开 CSV 文件,Excel 会将日期转换为美国格式,除非不可能(因此它会尝试其他格式)。

您可以尝试添加参数 Local:=True解决它。

关于excel - vba打开csv文件困惑的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44869928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com