我正在使用 VBA 代码我在网上基本上输入了几个部分,然后让 Excel 编辑一个 Word 模板,将输入的帐号替换为<oaccount>
,将<date>
替换为某事的日期等。
我面临的问题是,在使用它时,输入的是单元格的核心值,而不是您看到的......例如,除了日期和 $ 金额外,我的所有内容都可以工作,因为当它替换<date>
和<amount>
时,它们在分别输入 34/04/2019 和 $3,460.00 时显示为"240419"和"3,460.00"。
我想了解如何让Excel将关键字替换为Excel的实际显示值。
以下是我用来执行此操作的内容:
Option Explicit
Public Sub WordFindAndReplace()
Dim ws As Worksheet, msWord As Object
Set ws = ActiveSheet
Set msWord = CreateObject("Word.Application")
With msWord
.Visible = True
.Documents.Open "F:Test folderTestFolderTest.docx"
.Activate
With .ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "CName"
.Replacement.Text = ws.Range("C1525").Value2
.Forward = True
.Wrap = 1 'wdFindContinue (WdFindWrap Enumeration)
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 'wdReplaceAll (WdReplace Enumeration)
End With
.Quit SaveChanges:=True
End With
End Sub
您是否尝试过在替换行上使用格式功能?这里有一个页面对它进行了描述。您也可以尝试使用 CStr() 函数将其转换为同一行中的字符串。
如果您使用格式,它看起来像这样:.Replacement.Text = Format(ws.Range("C1525").Value2,"dd/mm/yyyy")
如果使用字符串转换,它将如下所示:.Replacement.Text = CStr(ws.Range("C1525").Value2)