【问题标题】:Pasting from excel clipboard without interpreting dates从 excel 剪贴板粘贴而不解释日期
【发布时间】: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,直接从数据库中链接数据

标签: vba excel date paste


【解决方案1】:

感谢 Vacip,代码

Columns("D:E").NumberFormat = "@"
Range("A1").Select
ActiveSheet.Paste

似乎是一种享受。

【讨论】:

    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2016-01-30
    • 2017-12-23
    • 2013-07-08
    相关资源
    最近更新 更多