「excel vba word段落削除」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
参考になりそうなシンプルなコードをご紹介しておきます。
Wordの段落を削除するExcel VBAのサンプル
Word文書が開かれている状態で、Excelから起動したVBEで標準モジュールに、以下のSubプロシージャを作成・実行してみてください。
On Error GoTo ErrHandl
With GetObject(Class:="Word.Application")
.ActiveDocument.Paragraphs.Item(1).Range.Delete
End With
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の重要な概念のひとつです。
- 『Excel VBAユーザーのためのWord VBA入門(1)』出ました。
- 『Word VBA入門』に登場するオブジェクトごとのプロパティ一覧
- 『Word VBA入門』に登場するオブジェクトごとのメソッド一覧
最終更新日時:2022-01-26 15:07
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord文書の段落を削除する