【发布时间】:2016-12-20 02:11:01
【问题描述】:
我在使用 vba 时将日期从一个文件复制到另一个文件并保留格式 (dd/mm/yyyy) 时遇到问题。 直接复制会导致可以转换为美国日期格式的日期更改为 mm/dd/yyyy,而那些不能(dd > 12 的任何日期)更改为字符串的日期。 我尝试先将日期更改为数字,然后复制/粘贴(计划在复制完成后返回日期格式)但这只会更改日期格式为 dd 12 仍然是字符串格式。此外,成功更改为数字的日期似乎先更改为美国格式拳头,然后更改为数字格式,所以无论如何我最终得到了错误的日期 奇怪的是手动完成这些步骤(在 vba 之外)工作正常,我可以将所有日期转换为我想要的任何格式,而美国格式永远不会出现。 这是我一直在使用的代码:
Sheets("Import").Select
PathName = Range("B2").Value
Filename = Range("B3").Value
TabName = Range("B4").Value
ControlFile = ActiveWorkbook.Name
Workbooks.Open Filename:=PathName & Filename
ActiveSheet.Name = TabName
Columns("A:A").Select
Selection.NumberFormat = "0"
Range("A2:A200").Copy Destination:=Workbooks(ControlFile).Sheets("Import").Range("A8:A206")
任何有关尝试的帮助或建议都会很棒。 凸轮
【问题讨论】:
-
我怀疑使用剪贴板可能是问题所在。需要保留格式吗?
-
不,我可以处理粘贴后的格式,但该过程实际上会更改值(即在电子表格 1 中,日期值为 42501,复制后日期值为 42679...
-
试试
Workbooks(ControlFile).Sheets("Import").Range("A8:A206").Value = Range("A2:A200").Value -
好的,我刚刚发现了一些有趣的东西,当我在 vba 中打开电子表格时,相同的日期已经是字符串格式了。
-
在没有看到数据的情况下,是否有可能是在复制公式?解决此问题的一种方法是使用
Range.PasteSpecial xlPasteValues