MS Word 2003に貼り付けられた文章からカタカナ語を抽出し、抽出したデータを別の新規文書に貼り付けたいと考えています。実現する方法(おそらくマクロ)を教えてください。
1. カタカナ語とは、連続するカタカナ文字で構成された文字列です。記号、改行、漢字、ひらがな、スペースは含みません。
2. 重複するデータは不要です。同じカタカナ語が複数ある場合、2 つ目以降をカットしたいです。
3. 抽出後のデータは改行、カンマ、タブなどで区切りたいと思います。
Win XP Home を使用しています。
質問等はコメント欄にどうぞ。
よろしくお願いします。
Sub Macro1() Dim objExp As Object Dim objMatchs As Object Dim objMatch As Object Dim words As String Dim words_count As Long Set objExp = CreateObject("VBScript.RegExp") Selection.WholeStory: 'すべて選択 With objExp .Global = True .Pattern = "[ア-ヵー]+": 'カタカナにマッチ .Ignorecase = False Set objMatchs = .Execute(Selection) End With For Each objMatch In objMatchs With objMatch If (InStr(words, .Value & vbCrLf)) = 0 Then words = words + .Value & vbCrLf End With Next objMatch Debug.Print words End Sub |< ※Word2000で確認してます。 ※とりあえず改行コード(vbCrlf)で区切ってます。
コメント(7件)
ーーーーーーーーーーーーーーーーーー
「自分にも答えられる質問がないかな?」「質問したいからポイントを獲得しよう!」そんなあなたは、さっそく回答してみましょう。
質問一覧ページでは質問が一覧で表示されています。質問のタイプや、カテゴリーごとに自分の興味がある質問を見つけてみましょう。また公開中アイコンをクリックすることで、現在公開中の質問だけに絞り込むことができます。
自分が答えることができる質問には答えるアイコン表示されているので、アイコンをクリックすることで回答ページへ移動し、回答を投稿してください。
回答を投稿する手順はとても簡単ですが、実際に回答を行う詳しい手順については以下のページでご紹介しています。
ーーーーーーーーーーーーーーーーーー
結果は次のようになります。
ポイント
ページ
タイプ
カテゴリー
クリック
アイコン
おねがいしますっ!
ばっちり動作しましたっ!
(1)Dim words_count As Long
試行錯誤のゴミです。消してください。
(2)If (InStr(words, .Value & vbCrLf)) = 0 Then words = words + .Value & vbCrLf
クリックも リックも同じものと判断されてしまいますので
forループの前に
words = vbCrLf
を付加して
If (InStr(words, vbCrLf & .Value & vbCrLf)) = 0 Then words = words + .Value & vbCrLf
に替えて下さい。
(3)新規文書への保存
Excelと違ってテンプレートの位置を示す必要があったと記憶しておりますため
勝手ながら割愛いたしました。
このあたりフォローいただけた方に、ポイント配分してくださいませ。
出力はDebug.Printで十分です。
正規表現のところですが、
すべてを網羅するには[ァ-ヶー]という表現になりますか?
上記のコードだと「ァ」を含むカタカナ語が分割されてしまいました。
この手の書き方はよくわからいなんですが、[ァ-ヶー]が全部網羅っぽい気がしています。
[ァ-ヶー]+
半角も含むのであれば
[ヲ-゚ァ-ヶー]+
その他として黒丸 ・ などは必要であれば
[ヲ-゚ァ-ヶー・・]+
何度もスミマセン。