将日期Word复制到Excel - 格式错误

时间:2017-09-13 08:16:54

标签: excel vba date ms-word format

我一直在努力解决使用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中的输出。

词语:

Word

Excel中:

Excel

3 个答案:

答案 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"

Oficial documentation of Format() function

答案 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

然后,该日期可以以您想要用于单元格的任何日期格式显示。