標題:
[發問]
用Excel開啟word後的搜尋問題
[打印本頁]
作者:
PKKO
時間:
2014-12-19 10:35
標題:
用Excel開啟word後的搜尋問題
objSelection.WholeStory
objSelection.Find.ClearFormatting
objSelection.Find.Text = tt
objSelection.Find.Replacement.Text = ""
objSelection.Find.Forward = True
objSelection.Find.Wrap = wdFindContinue
objSelection.Find.Format = False
objSelection.Find.MatchCase = False
objSelection.Find.MatchWholeWord = False
objSelection.Find.MatchByte = True
objSelection.Find.CorrectHangulEndings = False
objSelection.Find.MatchAllWordForms = False
objSelection.Find.MatchSoundsLike = False
objSelection.Find.MatchWildcards = False
objSelection.Find.MatchFuzzy = False
objSelection.Find.Execute
objSelection.TypeText Text:=CStr(rr)
objSelection.Find.Execute , , , , , , , , , , wdReplaceAll
複製代碼
以上之程式碼可以完成我搜尋的工作,並且取代成功
但要如何得知有"幾個"搜尋結果,將搜尋結果的數量變成一個變數名稱ex:findN
而我就可以執行其他動作
if findN =0 then XXXXX
麻煩各位大大了
作者:
luhpro
時間:
2014-12-21 23:12
本帖最後由 luhpro 於 2014-12-21 23:15 編輯
以上之程式碼可以完成我搜尋的工作,並且取代成功
但要如何得知有"幾個"搜尋結果,將搜尋結果的數量變成一個 ...
PKKO 發表於 2014-12-19 10:35
一般有同一物件多次引用時可以用 With ... End With 包起來,
其中再以 . 取代此物件:
你的程式可以改為 :
With objSelection
.WholeStory
With .Find
.ClearFormatting
.Text = tt
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.CorrectHangulEndings = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
.Execute
End With
.TypeText Text:=CStr(rr)
.Find.Execute , , , , , , , , , , wdReplaceAll
End With
複製代碼
另取得被取代文字數量的方式我沒找到,
但你的需求可以用下式來實現:
if Not objSelection.Find then XXXXX
作者:
PKKO
時間:
2014-12-22 00:01
回復
2#
luhpro
太感謝了,我要的就是最後面的功能,我明天來試試看!,感恩!
作者:
PKKO
時間:
2014-12-27 17:45
回復
2#
luhpro
感謝 luhpro 大大,
小弟測試後,完全可以使用
以下為小弟的程式碼(我的寫法比較偷懶,不曉得我的寫法與您的寫法,在程式運作上速度會有差異嗎?)
With objSelection
.WholeStory
.Find.ClearFormatting
.Find.Text = ttt
.Find.Replacement.Text = ""
.Find.Forward = True
.Find.Wrap = wdFindContinue
.Find.Format = False
.Find.MatchCase = False
.Find.MatchWholeWord = False
.Find.MatchByte = True
.Find.CorrectHangulEndings = False
.Find.MatchAllWordForms = False
.Find.MatchSoundsLike = False
.Find.MatchWildcards = False
.Find.MatchFuzzy = False
If Not .Find.Execute Then
Range("k" & num) = "搜尋不到 " & ttt
num = num + 1
Else
.TypeText Text:=CStr(rr)
.Find.Execute , , , , , , , , , , wdReplaceAll '如果找到
End If
End With
複製代碼
作者:
GBKEE
時間:
2014-12-28 11:13
回復
4#
PKKO
試試看
Option Explicit
Sub Ex()
Dim s As String, n As Integer
s = "TEST"
With Selection.Find
.Text = s
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute = True
n = n + 1
Selection.Find.Execute
Loop
If n > 0 Then
MsgBox "搜尋 " & s & " 共有 " & n & " 次"
Else
MsgBox "搜尋不到 " & s
End If
End Sub
複製代碼
作者:
PKKO
時間:
2014-12-28 23:49
回復
5#
GBKEE
感謝!有空再來試試看
作者:
PKKO
時間:
2014-12-29 05:57
本帖最後由 PKKO 於 2014-12-29 05:58 編輯
感謝超版大大,我將程式碼改成如下,不然N會少一半的次數,因為兩次Execute
目前已可正常使用,感動ㄋㄟ!
With objSelection
.WholeStory
With .Find
.ClearFormatting
.Text = "t03"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.CorrectHangulEndings = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
Do While .Execute = True
n = n + 1
'找到的話
'msgbox "找到了"
Loop
End With
If n = 0 Then '如果找不到
'msgbox "找不到"
End If
End With
複製代碼
回復
5#
GBKEE
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)