保留Excel单元格格式的Excel VBA到Word书签

时间:2016-07-25 16:30:15

标签: excel excel-vba ms-word vba

我有一个VBA代码段,可以将Excel单元格数据提取到Word模板,使用模板中的书签将值分配给特定的模板位置。我能够以文本格式将Excel单元格值导出到书签,但不能保留本机Excel格式。

代码使用.Value属性以文本格式提取数据。我正在尝试在Word中第二次最小化手动格式化(例如,将文本导出值150001.22从DENT_90 Excel范围转换为$ 150,001.22,用于Word中的DENT_90书签)。

有关如何执行此操作的任何想法,以便我可以使用Excel货币单元格格式导出到Word吗?我已经查看了FormatText的一些解释,但似乎无法使用以下代码段:

Sub TestMemoGen()
Dim objWord As Object
Dim ws2 As Worksheet

Application.ScreenUpdating = False
Set ws2 = ThisWorkbook.Sheets("Word Export")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open "C:\Users\ Tester\Word Test Sim.docm"

With objWord.ActiveDocument
.Bookmarks("DENT_90").Range.Text = ws2.Range("DENT_90").Value
End With
Set objWord = Nothing
Application.EnableEvents = True
End Sub

感谢您提出的所有建议。我有大约一百个书签链接到不同的模板,所以如果可以从Excel本地导出格式,这将是一个巨大的帮助。

1 个答案:

答案 0 :(得分:0)

.Value只是单元格的“文本”,在这种情况下是数字。它不带有格式信息。你需要NumberFormat。

<Some number>  = ws2.Range("DENT_90").Value
<the format>   = ws2.Range("DENT_90").DisplayFormat.NumberFormat

一点测试表明:

Sub junk()
    MsgBox "format=" & Application.Range("g2").DisplayFormat.NumberFormat    
End Sub

因此,Excel单元格中的信息是“format =#,## 0”。

在Word文档中,您可以使用Scott上面描述的format(),或者: https://msdn.microsoft.com/en-us/library/office/gg251755.aspx

作为旁注,你知道你可以尝试在宏中记录功能吗?然后,查看录制的宏以查看如何执行操作,例如将输入的文本格式化,这样可以更精确地控制精确格式...