我一直在努力解决使用VBA将日期从Word文档复制到Excel的问题。
我的问题是格式。如果我放dd/MM/yyyy
,它会在MM/dd/yyyy
过程中发生变化,我无法解决问题。
基本上复制我正在使用这一行:
Sheets("wImp").Range("AA" & i) = wdDoc.ContentControls(1).Range.Text
但是在此过程中数据会被修改。
我最初使用 LegacyForms 但它确实有用,我希望日期选择器会有所帮助,但事实并非如此。在某种情况下,日期不可能像21/12/2017
那样切换,它将保持原样。但是当它可以像1/5/2017
那样切换时,它将切换到5/1/2017
。
!然而,对于所有日期,单元格格式保持dd/MM/yyyy
,但是切换了月份和日期位置。
请参阅下文,了解我在Word中输入的内容以及Excel中的输出。
词语:
Excel中:
答案 0 :(得分:0)
如果要在工作表中使用大陆日期格式"dd/mm/yyyy"
,则必须使用Format()
功能。所以,试试这个:
Sheets("wImp").Range("AA" & i) = Format(wdDoc.ContentControls(1).Range.Text, "dd/mm/yyyy")
Sheets("wImp").Range("AA" & i).NumberFormat = "dd/mm/yyyy"
答案 1 :(得分:0)
Sub test()
ActiveSheet.Range("A1").NumberFormat = "@"
ActiveSheet.Range("A1").Value = "01/05/2017"
ActiveSheet.Range("A2").NumberFormat = "m/d/yyyy"
ActiveSheet.Range("A2").Value = "01/05/2017"
ActiveSheet.Range("A3").NumberFormat = "yyyy/m/d;@"
ActiveSheet.Range("A3").Value = "01/05/2017"
End Sub
尝试这样的事情。 Excel将在复制期间转换数据。 所以,改变" NumberFormat"复制之前。
答案 2 :(得分:0)
为单元格指定一个字符串使得Excel认为该字符串应该以{{1}}格式解释,而不管您的语言环境如何(并且无论单元格的日期格式如何)。
在将值分配给单元格之前,使用"mm/dd/yyyy"
函数(将使用系统日期/时间设置完成)将字符串转换为Date
。
CDate
然后,该日期可以以您想要用于单元格的任何日期格式显示。