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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイント:テキストボッ...
-
Excel で下線が消えてしまうの...
-
Google Keepで数字に勝手に下線...
-
Word で下線の色の変え方
-
AppleのNumbersというアプリで...
-
AUTOCAD文字の下に同じ長さの線...
-
ワードの表で下線と文字の入力
-
秀丸・カーソル行に下線を引き...
-
エクセル:セル内の文字列の下...
-
WORD2010 ハイパーリンクの下線...
-
outlook2003にて新規メッセージ...
-
アンダースコア(下線)のあるメ...
-
エクセルのセルの下線が消えない
-
【excelの下線(会計)とは】
-
アンダーラインを引くやり方
-
Latexにおける下線のひき方のコト
-
E-mail中の文章に赤で下線を引...
-
線の引き方教えてください!!!
-
Wordでレイアウトを変えないで...
-
ホームページ上の青色で下線の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で下線が消えてしまうの...
-
パワーポイント:テキストボッ...
-
Google Keepで数字に勝手に下線...
-
Word で下線の色の変え方
-
AppleのNumbersというアプリで...
-
Latexにおける下線のひき方のコト
-
アンダースコア(下線)のあるメ...
-
WORD2010 ハイパーリンクの下線...
-
【excelの下線(会計)とは】
-
アンダーラインを引くやり方
-
パワーポイントの見出しの線の...
-
E-mail中の文章に赤で下線を引...
-
エクセルのセルの下線が消えない
-
Wordでレイアウトを変えないで...
-
ワードの表で下線と文字の入力
-
エクセル:セル内の文字列の下...
-
outlook2003にて新規メッセージ...
-
AUTOCAD文字の下に同じ長さの線...
-
Word 変換したら、その後...
-
イラレ8.0で文字にアンダーライン
おすすめ情報