表をすべて削除するWordマクロを、ご紹介しています。
同じことをWord VBA(Visual Basic for Applications)ではなく、VBScriptで行いたいという方もいらっしゃるようです。
このサイト・インストラクターのネタ帳へも、
「word vbs 表 削除」
といった検索キーワードでのアクセスがあります。
Word文書の表を削除するサンプルスクリプト
以下のようなスクリプトで、指定したWord文書内の表を、一気に削除できます。
'-- main begin ----
Dim args
Set args = Wscript.Arguments
If args.Count < 1 Then
MsgBox "表を削除したいWordファイルを、ドラッグ&ドロップしてください。"
Wscript.Quit
End If
Dim msg
msg = "ドラッグ&ドロップされたWordファイルの表をすべて削除しますか?"
If MsgBox(msg, vbYesNo) = vbNo Then Wscript.Quit
Private wrd
Set wrd = CreateObject("Word.Application")
wrd.Visible = False
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim f_path ' ファイルのフルパス
For Each f_path in args
Select Case UCase(fso.GetExtensionName(f_path))
Case "DOC", "DOCX", "DOCM"
Call removeAllTables(f_path)
Case Else
MsgBox fso.GetFileName(f_path) & "はWordファイルではありません。"
End Select
Next
Set fso = Nothing
wrd.Quit
Set wrd = Nothing
MsgBox "スクリプトが終了しました。"
'-- main end ----
With wrd.Documents.Open(doc_path)
Dim tbl
For Each tbl in .Tables
tbl.Delete
Next
.Save
.Close
End With
End Sub
上記のスクリプトを拡張子「.vbs」で保存して、Wordファイルをドラッグアンドドロップすると、
「ドラッグ&ドロップされたWordファイルの表をすべて削除しますか?」
というメッセージが表示され、[はい]ボタンをクリックすると、指定された文書の表がすべて削除されます。
サンプルスクリプトの解説
基本構造は、Excelファイルの全シートを表示するVBScriptと、よく似ています。
Wordマクロなら、Wordの[元に戻す]コマンドが使えますが、VBScriptからの削除処理なので、
Dim msg
msg = "ドラッグ&ドロップされたWordファイルの表をすべて削除しますか?"
If MsgBox(msg, vbYesNo) = vbNo Then Wscript.Quit
と、確認を行うようにしています。
Word文書に処理したいので、拡張子の判定部分が、Excelファイルに処理するVBScriptとはもちろん異なります。
Select Case UCase(fso.GetExtensionName(f_path))
Case "DOC", "DOCX", "DOCM"
表の削除処理を行っているSubプロシージャ内の、
With wrd.Documents.Open(doc_path)
Dim tbl
For Each tbl in .Tables
tbl.Delete
Next
.Save
.Close
は、Word VBAのコードとほとんど同じですが、VBScriptですから、
With wrd.Documents.Open(doc_path)
と、CreateObjectしたWord.Applicationオブジェクトから、指定するオブジェクト式になっています。
Home » WSH・Windows Script Hostの使い方 » Word文書から表を削除するVBScript