【发布时间】:2018-01-19 12:02:47
【问题描述】:
我正在尝试使用 VBA 将 SQL 查询的结果粘贴到 Excel 电子表格中,但它一直错误地解释日期,这意味着以后无法处理它们。
我的约会看起来像这样 (tsv)
Name Total Active Start date End date
xxxx 433 42 20/10/2017 09/01/2018
如果您只是使用 Ctrl+V 粘贴到工作表中,那么这正是您所得到的。
但是,如果我使用,例如
Range("A1").Select
ActiveSheet.Paste
我明白了
Name Vol Tot Start Date End Date
xxxx 433 42 20/10/2017 01/09/2018
注意结束日期从“09/01/2018”到“01/09/2018”的切换
如何阻止 VBA 尝试预测我输入的日期格式?这尤其令人讨厌,因为现在开始日期采用 dd/mm/yyyy 格式,而结束日期采用 mm/dd/yyyy 格式,这意味着我无法在接下来的宏的其余部分中将它们一起处理。我想保留原始 dd/mm/yyyy 格式的两个数字(因为它们在输入中)。
任何帮助将不胜感激。
【问题讨论】:
-
在粘贴之前将目标单元格格式化为“文本”。
-
不要复制数据。 插入数据(Data>Insert)并指定适当的语言环境、日期设置。 Excel 无法猜测 tsv 中的格式与您自己的不同。
-
@vacip 源是一个文本文件
-
我知道,我说的是目标。在插入之前,请执行
Cells.NumberFormat = "@"之类的操作。丑陋但应该做的伎俩。 -
另外,@PanagiotisKanavos 是对的,复制粘贴是讨厌的、缓慢的和容易出错的。使用导入,甚至更好,完全避免使用 VBA,直接从数据库中链接数据