2017-06-02 115 views
0

我試圖創建VBA宏,複製用戶輸入的變量並搜索文本字中的特定字段並替換它,我嘗試了許多代碼在堆棧溢出和其他論壇,但我沒有成功 下面的代碼正常工作,但它不會替代該字,代碼搜索該字段並將該變量放在它旁邊。如果有人有解決方案:D從excel到word的VBA查找並替換bug

Sub CreateNewWordDoc() 
Dim wrdApp As Word.Application 
Dim wrdDoc As Word.Document 
Dim i As Integer 
Set wrdApp = CreateObject("Word.Application") 
wrdApp.Visible = True 
Set wrdDoc = wrdApp.Documents.Add 
Set wrdDoc = wrdApp.Documents.Open("D:\pfe\DECfinal1.doc") 
With wrdDoc 
.Application.Selection.Find.Text = "Nombre d'alésage" 
.Application.Selection.Find.Execute 
.Application.Selection = Sheets("Dec").Range("A2") 

End With 

End Sub 
+0

它對我來說工作得很好。 –

+0

它的工作原理我知道,但我想用我的變量替換該文本,而不是將變量放在旁邊。例如,當excel中存在變量並運行宏時,他搜索「」「Nombre d'alésage」「」並將其替換爲(我沒有添加到它)(NoT COPY NEXT TO IT))用excel添加的變量 –

回答

0

就像我說你的代碼適合我。但要更安全一些,請使用對象來處理它,並直接進行搜索和替換。看到這個

Sub CreateNewWordDoc() 
    Dim wrdApp As Word.Application 
    Dim wrdDoc As Word.Document 

    Set wrdApp = CreateObject("Word.Application") 
    wrdApp.Visible = True 

    Set wrdDoc = wrdApp.Documents.Open("C:\Users\Siddharth\Desktop\DECfinal89.doc") 

    With wrdDoc 
     For Each rngStory In .StoryRanges 
      Do 
       With rngStory.Find 
        .Text = "Nombre d'alésage" 
        .Replacement.Text = Sheets("Dec").Range("A2") 
        .Wrap = wdFindContinue 
        .Execute Replace:=wdReplaceAll 
       End With 
       Set rngStory = rngStory.NextStoryRange 
      Loop Until rngStory Is Nothing 
      Next 
    End With 
End Sub 
+0

Nothing happins:'( –

+0

我上面發佈的代碼已經過測試和測試:)。你什麼意思是「什麼都沒有發生」? –

+0

沒有任何反應意味着它完美地反映了這個詞,但是這個宏沒有檢測到名稱爲「nombre d'alésage」的字段,並且沒有替換它 –