【问题标题】:Creating a custom date field in Word (WWYY)在 Word 中创建自定义日期字段 (WWYY)
【发布时间】:2023-02-24 09:45:05
【问题描述】:

我正在尝试使用 excel 公式 TEXT(WEEKNUM(TODAY()),"00")&TEXT(TODAY(),"YY") 在 word 中显示 WWYY

文档的目的是显示打开文档时的周和年。假设文档是今天打开的。它应该显示0823。

基本上,如果我去 Insert -> Date & Time ,我想在那里看到一个自定义日期字段作为 WWYY。

我尝试在 excel 中创建公式并链接到 word,但它不起作用。为了方便起见,我只想在word中实现这一点。

【问题讨论】:

  • 如果我在公式中添加一个前导=,它会给出正确的输出,但我有一个非英文版本的 excel,因此不得不修改一些部分。您的 excel 中的公式是否按预期工作?如果是这样,后来究竟是什么失败了?
  • 该公式适用于 excel。我想在 Word 中使用公式。我不确定我是否必须使用宏来完成这项工作,或者是否有其他方法可以在 Word 中处理此问题。

标签: excel vba ms-word datefield


【解决方案1】:

您必须将文档另存为 Word 启用宏的文档 (.docm)。使用快捷方式 Alt+F11Option+fn+F11 (macOS) 打开 Microsoft Visual Basic 编辑器。单击左侧项目工具栏上的ThisDocumentThisDocument 的代码编辑器将打开。现在您可以使用如下类似的代码将 WWYY 的实例替换为填充的值。对于今天的日期,WWYY 现在将替换为 0823。我还编写了另一个函数,它将在文件关闭时将值(即0823)恢复为WWYY。这样当文件在不同的时间打开时,该功能仍然有效。

谨防!它将替换WWYY0823 的所有实例。因此,更好的想法是在 RevertWWYY 和 ReplaceWWYY 函数中使用 WWYY 的前缀。 (.Text = "Prefix WWYY" 在 ReplaceWWYY 和 RevertWWYY .Text = "Prefix " + CStr(Forma... 中)。

Private Sub Document_Close()
    Call RevertWWYY
End Sub

Private Sub Document_New()

End Sub

Private Sub Document_Open()
    Call ReplaceWWYY
End Sub
 
Sub ReplaceWWYY()
With Selection.Find
     .Forward = True
     .Text = "WWYY"
     .Replacement.Text = CStr(Format(DatePart("ww", Date, vbMonday, vbFirstFourDays), "00")) + CStr(Right(Year(Date), 2))
     .Execute Replace:=wdReplaceAll, Forward:=True, _
     Wrap:=wdFindContinue
    End With
    ActiveDocument.Save
End Sub
Sub RevertWWYY()
With Selection.Find
     .Forward = True
     .Text = CStr(Format(DatePart("ww", Date, vbMonday, vbFirstFourDays), "00")) + CStr(Right(Year(Date), 2))
     .Replacement.Text = "WWYY"
     .Execute Replace:=wdReplaceAll, Forward:=True, _
     Wrap:=wdFindContinue
    End With
    ActiveDocument.Save
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多