![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
5年ぐらい前まではエクセルVBAを使っていたのですが、ワードでちょっとしたマクロを作ろうと思って愕然...すっかり忘れています。
勉強しなおす暇が今はありません。どうか助けてくださいませ。
やりたいことは;
1)日本語や英語の文章中(最大5ページ程度)、下線部の数を数える。
2)(できれば)下線部を新文書に抽出する
3)ピリオドや句点や?の数を数え、文(sentences)の数を出す。
以上なのです。
文章の対象を定めて、定義づけして、下線部分の有無をIFで調べて、countを使って...と考えてみたのですが、お手上げでした。1)と3)も似たようなスクリプトでできるとは思うのですが...
どうぞ、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
まず、Excel VBAと Wordとは考え方が違いますから、VBAやOffice の部分は似ていても、Word固有のオブジェクトなど考え方がまったく違います。5年前に戻れれば、私たちは学ぶことが出来たかもしれませんが、Word VBAは、もう、なかなか手の届かない存在です。
1 ~2 ですが、これは、単語単位です。つまり、下線というのは、単語に対して付けられるもので、その延長に、助詞や接続詞がありますが、それらとは切り分けられます。
例
ピリオドや句点
↓
ピリオド, 句点
Sub CollectinUnderLined_Words()
Dim ColWords() As String
Dim i As Long
Dim w As Variant
For Each w In ActiveDocument.Words
If w.Underline = 1 Then 'wdUnderlineSingle 'シングルの下線
If Len(w.Text) > 1 Then
ReDim Preserve ColWords(i)
ColWords(i) = w.Text
i = i + 1
End If
End If
Next w
Application.Documents.Add DocumentType:=wdNewBlankDocument
ActiveDocument.Content.InsertAfter Text:=Join(ColWords, " ,")
End Sub
3に関しては、私は、Sentence の概念は、良く分かりませんが、行とは食い違いが出るようです。
Sub getSentencesCount()
Dim mySentence As Long
With ActiveDocument
.Repaginate
mySentence = .Sentences.Count
MsgBox mySentence & " 文"
End With
End Sub
ご回答ありがとうございました。
早速試してみました!すごい!文の数が出てきます~。
Sentenceというオブジェクトがあるんですね。
一度しっかりWord VBA挑戦したいです。
No.2
- 回答日時:
>5年ぐらい前まではエクセルVBAを使っていたのですが
>愕然...
年月が経ったからではないと思う。ワードVBAはエクセルVBAとはまったく別物で、エクセルのVBAの経験は役立たないと思う。解説書や教えていただける方も少ない、独学しにくい分野で、私も少ししか判りません。
ーー
Sub test10()
Dim wd As Object
For Each wd In ActiveDocument.Words
'MsgBox wd
If wd.Font.Underline = wdUnderlineSingle Then
MsgBox wd
End If
Next
End Sub
何かの文書に下線(単下線)を数箇所引いて、上記を実行してみてください。
問題点は
(1)MSワードの区切る、文章の切断方式の結果の「Words」が、質問者の考える区切りと一致するか。私には、区切りはどういう仕組みか良くわからない。
上記コードのコメント化した第4行目を、コメントをはずして実行し考えてください。次々とwordsを表示できます。
(2)MSワードの認める下線の種類が、数種類あるが、複数の種類を使っているとき対処が必要。Or で結べば対処できると思うが。
ーー
上記で大筋で、意にかなうなら、後は、WEB、マクロの記録、ヘルプででも、勉強してください。
Syntaxは大体同じで、語彙が違う。。。フランス語とスペイン語のような感じでしょうか。
早速実行してみました。下線部がちゃんとMsgBoxで上がってきました。すごい~。
Wordでは、日本語でも形態素(単語の種類)をちゃんと認識しているみたいなので大丈夫そうです。
勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイント:テキストボッ...
-
Excel で下線が消えてしまうの...
-
Google Keepで数字に勝手に下線...
-
アンダーラインを引くやり方
-
小数点以下の数字に下線を引くには
-
アンダースコア(下線)のあるメ...
-
Word 変換したら、その後...
-
Latexにおける下線のひき方のコト
-
E-mail中の文章に赤で下線を引...
-
powerpointの下線
-
Wordでメルアド入力する際の下...
-
WORD2010 ハイパーリンクの下線...
-
AppleのNumbersというアプリで...
-
outlook2003にて新規メッセージ...
-
ホームページ・ビルダーで、文...
-
イラレ8.0で文字にアンダーライン
-
ExcelのVBAで下線のついている...
-
Word で下線の色の変え方
-
ワードの表で下線と文字の入力
-
URLが青くならない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で下線が消えてしまうの...
-
パワーポイント:テキストボッ...
-
Google Keepで数字に勝手に下線...
-
アンダースコア(下線)のあるメ...
-
AppleのNumbersというアプリで...
-
Word で下線の色の変え方
-
Latexにおける下線のひき方のコト
-
アンダーラインを引くやり方
-
エクセルのセルの下線が消えない
-
WORD2010 ハイパーリンクの下線...
-
ExcelのVBAで下線のついている...
-
E-mail中の文章に赤で下線を引...
-
ワードの表で下線と文字の入力
-
Wordでレイアウトを変えないで...
-
秀丸・カーソル行に下線を引き...
-
ワードで下線を引く方法
-
ワードアンダー線の長さを決め...
-
Wordでメルアド入力する際の下...
-
【excelの下線(会計)とは】
-
AUTOCAD文字の下に同じ長さの線...
おすすめ情報