2015-10-15 103 views
1

vba腳本,看起來很簡單,但不能像我想要的那樣正常工作。 我的腳本在當前文檔中插入圖像(PNG文件)並在每張圖片即文件的名稱後加上一個標題。VBA插入圖片和傳說詞2010

所以插入圖片使用:

Selection.InlineShapes.AddPicture FileName: = sFile 
Selection.TypeParagraph 

後,我用它來插入文本:

Set Opar = ActiveDocument.Paragraphs.Add 
oPar.Range.Text = sFile 
oPar.Range.Style = " Normal" 

的問題是,圖像中的所有文檔的開頭找到,安排在相反順序(插入的最後一張圖片首先出現在文檔中),並且圖例全部位於文檔的末尾。

發生了什麼事?

+1

您是否嘗試過在插入後移動您的選擇? – ale10ander

+0

這不會發生在您的代碼中,但無論如何,您可以先嚐試移動選擇,然後像@Cptn_Hammer所說的重新執行您的代碼。 –

+0

你能解釋一下「移動選擇」plz嗎?它是通過代碼完成的嗎? – Boro72

回答

1

@Boro:直接使用對象模型比試圖強制選擇(模仿用戶操作)效率更高。沒有單一的方式來實現你的描述,所以我要證明我的偏好:

Dim ils as Word.InlineShape 
Dim rng as Word.Range 
'Starting with current sel, but this could also be a Range... 
Set ils = Selection.InlineShapes.AddPicture(FileName: = sFile) 
Set rng = ils.Range 
'Move the focus AFTER the picture 
rng.Collapse wdCollapseEnd 
'new para, text, followed by new para 
rng.Text = vbCr & sFile & vbCr 
rng.Style = wdStyleNormal 
'focus in last para inserted by code 
rng.Collapse wdCollapseEnd 
'Do other things with the Range... 
'Leave cursor there for user to work 
rng.Select 

的關鍵在於我的做法是倒塌的範圍,無論是在起點或終點。可以將它想象爲按下左或右箭頭鍵,以減少對閃爍光標的選擇。除了你可以有任意數量的範圍(但只有一個選擇),並且東西不會在屏幕上跳來跳去。

+0

這是完美的:布拉沃!並感謝您的詳細解釋。它有很多幫助。 – Boro72

+0

如果答案對您有幫助,請點擊旁邊的複選標記進行接受。歡迎來到堆棧溢出! – ale10ander