Word VBA将长日期转换为短日期

时间:2018-07-19 23:24:36

标签: vba ms-word word-vba

我需要将其转换为:“ 2018年7月19日,星期四”到“ 7/19/2018”。然后将其转换为字符串,以便我可以将其替换为下划线,以便保存文件。我尝试了cdate,但是没有用。我试过的-> x = cdate(x)。也有人可以告诉我如何执行保存提示

Sub Macro4()
Dim x As String
Dim z As String
Dim y As String

'x has the date
x = ActiveDocument.ContentControls(1).Range.Text
'y has the name
y = ActiveDocument.ContentControls(2).Range.Text
' error with code trying to convert Thursday, July 19, 2018 to 7/19/2018
x = cDate(x,"mm/dd/yyyy")

'replace backslash with an underscore
newstring = Replace(z, "/", "_")

ActiveDocument.SaveAs2 FileName:=z, FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=15

End Sub

1 个答案:

答案 0 :(得分:0)

我认为CDate不是您要寻找的功能。我相信DateValue会更好。从语言参考中:

  

必需的date参数通常是一个字符串表达式   表示从100年1月1日到9999年12月31日的日期。   但是,日期也可以是可以表示日期的任何表达式,   时间,或者日期和时间都在该范围内。

在任何情况下,日期中的星期几太多-需要删除。例如:

x = ActiveDocument.ContentControls(1).Range.Text
x = Mid(x, InStr(x, " ") + 1)
'y has the name
y = ActiveDocument.Contentcontrols(2).Range.Text

z = DateValue(x)