2013-10-21 69 views
0

我有一行文字說「[EmbeddedReport]報告在這裏[/ EmbeddedReport]」。Word 2010,將光標移動到特定文本,用文件內容替換文本

我想用一個空字符串替換「report goes here」,並將光標放在[EmbeddedReport]標記後面。然後我將運行以下代碼...

With Selection.InsertFile ('c:\Temp\Report.rtf') 

這應該把標記之間的報告文本。我試圖用下面的代碼找到遊標。它似乎沒有工作。

.Selection.Find 
.ClearFormatting 
.MatchWholeWord = False 
.MatchCase = False 
.Execute FindText:="report goes here" 

唯一的問題是光標不在[EmbeddedReport]和[/ EmbeddedReport]並插入該文件任何地方運行宏之前光標位於之間。

回答

0

解決這類問題的常用方法是記錄宏 - 並執行需要移動光標和突出顯示文本等的任務 - 然後檢查宏寫入的代碼以執行這些任務。這通常會讓您瞭解如何定製自己的代碼以執行相同的任務。

+1

dav1dsm1th ......老實跟你說沒有過我的腦海後,我已經張貼的問題,但感謝的洞察力。我感謝您花時間回覆。 –

+0

dav1dsm1th ...對不起。這是我的錯,它沒有奏效。我沒有刪除你的代碼上面的一些代碼。我仍然需要做一些測試,但我認爲你已經回答了我的問題。在我有機會進一步測試之後,我會將其標記爲答案。再次感謝。 –

+0

我只提出了一種方法...沒有代碼。如果是@KazJaw回答你的問題,請提供解答。 – dav1dsm1th

1

你可能會需要調用Find object兩次:

一線發現整句話[EmbeddedReport]report goes here[/EmbeddedReport]二線先找到步驟的結果中的文本report goes here。重要的是,您不需要替換該短語,它將被選中並替換爲您使用Selection.InsertFile method導入的文本。

這裏建議代碼(測試示例文件):

'FIRST- find [EmbeddedReport]report goes here[/EmbeddedReport] 
    With Selection.Find 
     .Text = "(\[EmbeddedReport\])text goes here(\[\/EmbeddedReport\])" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .MatchWildcards = True 
    End With 
    '...and select it 
    Selection.Find.Execute 

    'SECOND- find only text to replace 'text goes here' 
    With Selection.Find 
     .Text = "text goes here" 
     .Replacement.Text = " " 
     .Forward = True 
     .Wrap = wdFindContinue 
     .MatchWildcards = True 
    End With 
    'end select it 
    Selection.Find.Execute 

    'now you could insert your file 
    Selection.InsertFile "c:\Temp\Report.rtf" 
+0

KazJaw確實消除了「報告到此處」的現象,但該文件仍會插入光標在宏開始時的任何位置。看起來光標不在[EmbeddedReport]和[/ EmbeddedReport]標記之間移動。 –

+0

KazJaw ...對不起。這是我的錯,它沒有奏效。我沒有刪除你的代碼上面的一些代碼。我仍然需要做一些測試,但我認爲你已經回答了我的問題。在我有機會進一步測試之後,我會將其標記爲答案。我沒有必要做第一個找到第二個。再次感謝。 –

+0

剛纔我看到你上面的第一條評論。如果您需要任何其他幫助,請將完整/更多的代碼添加到您的問題中。 –

相關問題