人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

マイクロソフトワードでの質問です。?文書中から”以下「(任意の文字列)」という。”という部分を検索し、?当該(任意の文字列)が文書中で何個使われているかを数える、という作業をマクロとかをつかって簡単にやりたいのですが、どうすればよいか教えてください。

●質問者: draftand
●カテゴリ:コンピュータ
✍キーワード:いるか マイクロソフト マクロ 文字列 検索
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tsukasa57
●0ポイント

マイクロソフトがマクロを公開していました。

http://support.microsoft.com/kb/413870/ja

このマクロは WORD 2000 用です。

◎質問者からの返答

答えになっていません。


2 ● Mook
●100ポイント ベストアンサー

カウントの部分は tsukasa57 さんが紹介した部分を応用しましたが、

下記のようでどうでしょうか。

'------------------------------------------------------------
Sub FindWC()
'------------------------------------------------------------
 Const findWord = "以下「*」という"  '★★★ 検索形式
 Dim objDic As Object, myKey
 Set objDic = CreateObject("Scripting.Dictionary")
 
 Selection.HomeKey Unit:=wdStory
 Dim dWord As String
 With Selection.Find
 .ClearFormatting
 .Text = findWord
 .Forward = True
 .MatchFuzzy = False
 .MatchWildcards = True
 Do While .Execute
 dWord = Replace(Selection.Text, "以下「", "")
 dWord = Replace(dWord, "」という", "")
 If Not objDic.Exists(dWord) Then
 objDic.Add dWord, 0
 End If
 Loop
 End With

  '--- 検索結果に対してカウント
 Dim wd As Variant
 Dim ret As String
 
 For Each wd In objDic.keys
 ret = ret & "【" & wd & "】・・・・" & FindCount(CStr(wd)) - 1 & vbNewLine
 Next
 Selection.HomeKey Unit:=wdStory

  '--- 結果表示
 MsgBox ret
End Sub

'------------------------------------------------------------
Function FindCount(sWord As String) As Long
'------------------------------------------------------------
 FindCount = 0
 With ActiveDocument.Content.Find
 Do While .Execute(FindText:=sWord, Forward:=True) = True
 FindCount = FindCount + 1
 Loop
 End With
End Function
◎質問者からの返答

お礼が遅れてすみません。すばらしいですね。どうもありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ