2016-07-25 143 views
0

我有一個VBA代碼片段,它將Excel單元格數據提取到Word模板,使用模板中的書籤將值分配給特定的模板位置。我能夠以文本格式將Excel單元格值導出到書籤,但不能保留本機Excel格式。保留Excel單元格格式的Excel VBA轉換爲Word書籤

該代碼使用.Value屬性以文本格式提取數據。我試圖在Word中再次最小化手動格式(例如,將DENT_90 Excel範圍內的文本導出值150001.22轉換爲Word中DENT_90書籤的$ 150,001.22)。

有關如何完成此操作的任何想法,以便我可以使用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本地導出,這將是一個巨大的幫助。

+0

試過'... = ws2.Range(「DENT_90」 ).Text'? –

+0

或'格式(ws2.Range(「DENT_90」)。Value,「$#,###。00」) –

+0

感謝Tim和@ScottHoltzman--感謝提示,因爲.Text格式的工作方式就像一個魅力。我還會看看Scott對格式示例的建議,以將此代碼合併到我的代碼的其他部分。 – JoeBeef

回答

0

。值只是單元格的「文本」,在這個例子中是數字。它沒有攜帶格式信息。你需要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單元格中的信息是 「格式=#,## 0」。

在Word文檔,然後你可以使用由斯科特上述格式(),或在: https://msdn.microsoft.com/en-us/library/office/gg251755.aspx

作爲一個側面說明,你知不知道,你可以嘗試的東西,在宏錄製功能當你去時?然後,看看錄製的宏,看看如何做的事情,如可能格式化輸入的文本,這使您更精確的格式化控制...

+0

感謝您的建議和格式()的鏈接。將嘗試這個Word文檔書籤部分,看看它是如何工作的。 – JoeBeef