gpt4 book ai didi

vba - Excel VBA 导入 .txt 文件导致日期格式错误

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

我正在导入一个以制表符分隔的文本文件(不是 .csv,一个 .txt)。第一列包含日期,有些是 dd/mm/yyyy 格式,有些是 dd/mm/yyyy hh:mm:ss 格式。

运行以下代码时,一些日期以 mm/dd/yyyy 格式显示。那些做的没有什么不寻常的,它似乎是随机发生的(有些有时间,有些没有,但无论哪种方式,来源仍然是日-月-年)

Sub LQMTrend()

Dim fp, textLine As String
Dim iRow As Integer
Dim lineArr() As String
Dim ws As Worksheet

Set ws = Sheets("Data")

iRow = 1

fp = "//srv57data1\product_support\xChange\Beam Profile Image Tool\LQM Reviews\Log files\Log file.txt"

Open fp For Input As #1

Do Until EOF(1)
Line Input #1, textLine
lineArr = Split(textLine, vbTab)
For x = 0 To UBound(lineArr)
ws.Cells(iRow, x + 1) = lineArr(x)
Next x
iRow = iRow + 1
Loop

Close #1

我尝试将 lineArr 声明为变体,但没有区别。有任何想法吗?

谢谢

编辑:我很欣赏这类似于 Excel VBA: importing CSV with dates as dd/mm/yyyy但最简单的答案在每种情况下都不同 - 对于 CSV 文件,“使用本地日期设置”导入选项解决了问题,打开 .txt 文件时不可用,必须使用 CDate 或类似方法动态转换日期。希望这有助于澄清。

最佳答案

Excel 首先尝试将日期字符串转换为本地设置的格式。如果它失败了,比如当月份优于 12 时,它将反转月份和日期。由于您正在处理这两种格式,因此最好的选择可能是自己解析日期:

Sub Macro1()
Dim arr() As String
Dim mydate As Date

' US format 6 may 2015
arr = Split("05/06/2015", "/")
mydate = DateSerial(Year:=arr(2), Month:=arr(0), Day:=arr(1))

' UK format 6 may 2015
arr = Split("06/05/2015", "/")
mydate = DateSerial(Year:=arr(2), Month:=arr(1), Day:=arr(0))

End Sub

关于vba - Excel VBA 导入 .txt 文件导致日期格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082305/

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