【发布时间】:2021-03-13 11:05:01
【问题描述】:
我将各种 CSV 文件中的信息复制到 Excel 工作表中。这些文件是来自 Symantec 的报告,其中包括上次扫描日期、定义日期等。
当我在 Excel 中查看 CSV 时,日期格式为自定义 dd/mm/yyyy hh:mm。
我正在尝试使用 VBA 脚本运行这些文件并列出 30 天内未扫描的系统的信息。
当信息被复制时,一些日期格式变为General,并显示正确的格式dd/mm/yyyy。
其他变为自定义,并将日期值切换为 mm/dd/yyyy,但保持显示相同。因此,不是将 01/12/2020 读取为 12 月 1 日,而是将其读取为 1 月 12 日。任何带有数字 1-12 的日期似乎都被读取为 mm/dd/yyyy,而不是原始配置为的 dd/mm/yyyy 格式。
是否有 VBA 代码可将 CSV 上的日期值转换为长数字,然后再将它们复制到 Excel 工作表中,然后再将该数字转换回日期格式?
我尝试使用 .numberformat "dd/mm/yyyy" 选项和 .numberformat "General"。
要打开每个 CSV 文件,我执行以下操作:
strFile = Dir(strSourcePath & "*.csv")
Cnt = Cnt + 1
If Cnt = 1 Then
r=2
Else
r = Cells(rows.count, "A").End(xlUp) + 1
End If
Open strSourcepath & strFile For Input as #1
inputRow = 1
Line Input #1, strData
If inputRow > 1 Then
inputRow - inputRow +1
X = Split(strData, ",")
For c = 0 To UBound(X)
Cells(r, c + 1).Value = Trim(X(c))
Next c
r = r + 1
Else
inputRow = inputRow + 1
End If
Loop
Close #1
strFile = Dir
Loop
【问题讨论】:
-
在单步执行代码时,我还发现它基本上是使用 trim 命令将每个逗号分隔值复制到目标单元格中。我发现在 VBA 中,字符串值为 2020 年 1 月 12 日,但一旦将其复制到工作表中,它就会更改为 2020 年 1 月 1 日。我很想知道是什么原因造成的
-
您能在 CSV 文件中包含几行吗?
-
这可能需要一段时间,因为我的 Internet PC 和我正在使用的 PC 之间没有直接访问权限。我可能有一些样本数据,以后可以从我其他办公室的测试工作站中包含在内。该文件有 90 多列和 1000 多行,我正在尝试从一个文件夹中导入多个 CSV,因此我不能只手动导入 csv。
-
我什至无法复制一行,因为它超出了字符数限制。我可以显示我遇到问题的单元格: 12/07/2020 11/08/2020 12:41 19/09/2020 07:26:55 前两个日期将反转为 12 月 7 日和 11 月 8 日,而底部将保持在 9 月 19 日。希望这会有所帮助
标签: excel vba date number-formatting