2016-06-07 137 views
-1

我想修改一個VBA宏來啓用Excel範圍(作爲圖片,用於格式化目的)粘貼到Word書籤。VBA excel圖片到Word書籤宏

Sub test2() 
Dim objWord As Object 
Dim ws As Worksheet 

Set ws = ThisWorkbook.Sheets("PREMIUMS") 
Set objWord = CreateObject("Word.Application") 

objWord.Visible = True 
objWord.Documents.Open "C:\TEST\BTM Macro Template.docx" 

With objWord.ActiveDocument 
.Bookmarks("PLAN_1_SHEET").Range.Text = ws.Range("A34").Value 
.Bookmarks("PLAN_2_SHEET").Range.Text = ws.Range("BTM_PREM").Value 
End With 
Set objWord = Nothing 
End Sub 

宏糊劑單個小區文本參考精細(「A34」),但使用一定範圍「BTM_PREM」相同的代碼)返回類型不匹配錯誤。 我知道這是由於範圍不是字符串,但似乎無法確定如何修改此行以在「PLAN_2_SHEET」書籤上粘貼「BTM_PREM」,如照片。

.Bookmarks("PLAN_2_SHEET").Range.Text = ws.Range("BTM_PREM").Value 
+0

考慮這裏給出的建議:http://stackoverflow.com/questions/2029724/add-an-image-to-word-document-and-scale-it-using-vba – Dave

+0

@Dave - 感謝您的鏈接。我確實看到了這個問題,但是在開發代碼的時候遇到了一些困難,以便將鏈接替換爲引用範圍的圖形。 – JoeBeef

回答

0

你可以使用Excel的Range對象Copy()方法,然後要麼Paste()PasteSpecial()PasteExcelTable()Range對象的方法,像如下:

ws.Range("BTM_PREM").Copy 
.Bookmarks("PLAN_2_SHEET").Range.Paste 

ws.Range("BTM_PREM").Copy 
.Bookmarks("PLAN_2_SHEET").Range.PasteSpecial Link:=True 

ws.Range("BTM_PREM").Copy 
.Bookmarks("PLAN_2_SHEET").Range.PasteExcelTable LinkedToExcel:=True, WordFormatting:=False, RTF:=True 
+0

感謝您使用這些選項,因爲我希望Paste Special對象方法可以保持格式不變。我已經嘗試了上面的PasteSpecial選項(如上覆制),但得到一個運行時錯誤「Method'Range'Range'工作表失敗。我是否需要進一步定義.ws以解決這個問題? – JoeBeef

+0

對於」ws.Range (「BTM_PREM」)。複製「聲明以前必須具備的功能:1)將」ws「設置爲有效的工作表(如」設置ws = ThisWorkbook.Sheets(「PREMIUMS」)「)2)設置一個名爲」BTM_PREM「 (可以在excel UI或VBA代碼中執行) – user3598756

+0

感謝您的提示。現在我已經可以使用Range.Paste選項作爲測試,並且可以將Excel信息粘貼到指定的名稱最後一個請求 - 是否有一行代碼可以添加,以便Excel範圍可以使用「保留源格式」粘貼選項粘貼到Word中?這將確保Excel數據在粘貼時不會超出Word文檔的邊界。 – JoeBeef

1

這是一段代碼,爲我的作品:

ActiveWorkbook.Sheets("Lease 1").Range("B16:AF25").CopyPicture Appearance:=xlScreen, Format:=xlPicture 
wdoc.Bookmarks("Bkmrk1").Range.Paste 
Application.CutCopyMode = False 

這不是一個完整的宏,只是它的一部分,所以你要調整一下,但我覺得你得到的理念。