Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の段落を削除する

Excel VBAでWord文書の段落を削除する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel & Word(バージョン2012 ビルド13530.20376 Microsoft Store)

「excel vba word段落削除」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

参考になりそうなシンプルなコードをご紹介しておきます。

Wordの段落を削除するExcel VBAのサンプル

Word文書が開かれている状態で、Excelから起動したVBEで標準モジュールに、以下のSubプロシージャを作成・実行してみてください。

Sub Wordの段落を削除する()
On Error GoTo ErrHandl

 With GetObject(Class:="Word.Application")
  .ActiveDocument.Paragraphs.Item(1).Range.Delete
 End With

Exit Sub
ErrHandl:
 Dim msg As String
 Select Case Err.Number
  Case 429
   msg = "Wordが起動していないようです。"
  Case Else
   msg = Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
 MsgBox msg
End Sub

上記のSubプロシージャには、Excel VBAのコードは一切含まれていませんから、どのOfficeアプリケーションから表示したVBEからでも実行できます。

サンプルで行っている処理について

まずVBAのGetObject関数で、起動済みのWord.Applicationへの参照を取得しています。
  With GetObject(Class:="Word.Application")

その後の、
   .ActiveDocument.Paragraphs.Item(1).Range.Delete
は、実質的にWord VBAのコードです。

Word.Application取得後のコードの意味

Word.ApplicationのActiveDocumentプロパティで、アクティブなWord文書を表すDocumentオブジェクトを取得し、
   .ActiveDocument.Paragraphs.Item(1).Range.Delete

Document.Paragraphsプロパティで、Word文書内の全段落を表すParagraphsコレクションを取得し、
   .ActiveDocument.Paragraphs.Item(1).Range.Delete

Paragraphs.Itemメソッドの引数に「1」を指定することで、1つ目の段落を表すParagraphオブジェクトを取得し、
   .ActiveDocument.Paragraphs.Item(1).Range.Delete

Paragraph.Rangeプロパティで、1つ目の段落の文字列範囲を表すRangeオブジェクトを取得して、
   .ActiveDocument.Paragraphs.Item(1).Range.Delete

Range.Deleteメソッドを使って、段落の削除を行っています。
   .ActiveDocument.Paragraphs.Item(1).Range.Delete

Word.ParagraphにDeleteメソッドはない

Word VBAのオブジェクトモデルを理解していないと、ParagraphオブジェクトにDeleteメソッドがあると考えてしまうかもしれませんが、違います。WordのParagraphオブジェクトに、Deleteメソッドは用意されていません。

文字列範囲に共通する処理は、Rangeオブジェクトが担っているのが、Word VBAの重要な概念のひとつです。

最終更新日時:2022-01-26 15:07

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の段落を削除する

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.