【问题标题】:Copy date from Excel paste to Word in different format以不同格式将日期从 Excel 粘贴到 Word
【发布时间】:2015-01-08 16:33:16
【问题描述】:

我有一个宏可以从 Excel 复制某些数据并将它们粘贴到 Word 中,但是我正在寻找一种在粘贴之前修改日期格式的方法。

这当前会复制 Excel 中显示的日期,即 16/01/2015

Sub NoFormatPaste()
    wdFind.Replacement.Text = ""
    wdFind.Forward = True
    wdFind.Wrap = wdFindContinue
    wdFind.Execute
    appWd.Selection.PasteSpecial DataType:=wdPasteText
    CutCopyMode = False
End Sub

Cells(Application.ActiveCell.Row, 14).Select
Selection.Copy
wdFind.Text = "DATE"
Call NoFormatPaste

但是我想以不同的格式粘贴它。像这样的东西,但它不起作用。即 2015 年 1 月 16 日星期五

Sub NoFormatDatePaste()
    wdFind.Replacement.Text = ""
    wdFind.Forward = True
    wdFind.Wrap = wdFindContinue
    wdFind.Execute
    appWd.Selection = Format(date_example, "dddd d mmmm yyyy")
    CutCopyMode = False
End Sub

wdFind.Text = "DATE"
Call NoFormatDatePaste

如果需要,我可以粘贴整个代码,这些只是不起作用的部分。

您似乎不能只告诉 Word 要打印什么值,而这些值实际上需要复制和粘贴。

【问题讨论】:

    标签: vba excel ms-word


    【解决方案1】:

    将您的日期值存储在字符串中并将其传递给其他过程:

    Dim dateValue as String
    
    dateValue = Cells(Application.ActiveCell.Row, 14).Value
    
    wdFind.Text = "DATE"
    
    Call NoFormatPaste(dateValue)
    

    在其他过程中,不要使用.Paste 方法,而只需插入字符串即可。

    Sub NoFormatDatePaste(dateValue as String)
    
    wdFind.Replacement.Text = ""
    wdFind.Forward = True
    wdFind.Wrap = wdFindContinue
    wdFind.Execute
    appWd.Selection.InsertAfter Format(dateValue, "dddd d mmmm yyyy")
    
    
    End Sub
    

    【讨论】:

    • 谢谢你,但是是否有一个函数代替 InsertAfter,所以新值会覆盖选择,而不是在它之后插入它?
    • 没关系,我在最后一行之前添加了appWd.Selection.Delete,因此它会在插入日期之前删除找到的文本。
    • 也许可以试试.Replace 而不是.InsertAfter
    • 试过.Replace 不喜欢,删除文本和插入日期现在工作正常,谢谢你的帮助。
    • 酷,如果它对你有用,那么这就是最重要的 :) 但我知道还有另一种方法可以直接执行此操作而无需删除。 (Word 不是我的专长,所以我不知道它是从头顶上冒出来的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多