【Word VBA】コンテンツコントロールを解除するWordマクロ

コンテンツコントロールに画像や文字が記述されているWordファイルを扱う際に、コンテンツコントロールが邪魔になる場合があります。

コンテンツコントロールを解除して、コンテンツコントロールに含まれている画像やテキストを残すためのマクロです。

[コンテンツコントロールのプロパティ]ダイアログボックスにおいて、[コンテンツコントロールの削除不可]のチェックがオフの場合にこのマクロを利用できます。ここがオフの場合、エラーが発生します。

このマクロでできること

処理前

コンテンツコントロールで画像や文字が挿入されています。カーソルで選択するとコンテンツコントロールの枠が見えます。

処理後

文字が画像を触ってもコンテンツコントロールの枠が見えません。解除されています。

マクロ


Sub コンテントコントロールを解除するWordマクロ()
 
 Dim CC As ContentControl
 
 For Each CC In ActiveDocument.ContentControls
  CC.Delete False
 Next
 
End Sub

マクロの解説

文書中のコンテンツコントロールを For Each Next ステートメントで取得し、それぞれを解除します。

コンテンツコントロールのDeleteメソッドには、内容自体を削除する場合と内容を残す場合とで指定できます。

6行目のDeleteContentsオプションFalseにすると内容が残ります。Trueにするとコンテンツコントロールも内容も削除されます。

関連記事

【Word VBA】コンテンツコントロールを削除可能にするWordマクロ

コメント

  1. giiv より:

    質問させていただきたいのですが、word vba、javascript word api、python docxなどwordを操作できるものが色々ありますが、一番wordのレイアウトや装飾などを深くいじれるものは何なのでしょうか?

    現在、テレビ番組用の台本から、演者が読み上げるためのカンペをつくるという作業をWordで行っているのですが、大量のコピーペーストとレイアウトの変更を手作業でやっており、自動化できないものかと頭を悩ませております。

    プログラミングも初心者で、これから頑張ることになりますが、何を勉強すれば目的に合ったものがつくれるか、意見を頂戴できれば幸いです。

    • 新田順也 より:

      giivさん
      お問い合わせをありがとうございます。
      > 一番wordのレイアウトや装飾などを深くいじれるものは何なのでしょうか?

      Word VBAです。扱いやすさもWord VBAです。

      > プログラミングも初心者で、これから頑張ることになりますが、何を勉強すれば目的に合ったものがつくれるか、意見を頂戴できれば幸いです。

      どの程度の初心者でしょうか。Excelマクロをいじったことがありますか?

      一度ランサーズなどでアウトソーシングをして慣れた人に作ってもらう方がいいのではないでしょうか。または、セミナーを受講してVBAの基礎を学ばれるといいと思います。Word VBAのセミナーはあまりないと思いますので、Excel VBAのセミナーを受講されるといいでしょう。また、Excel VBAの書籍で勉強されるのもいいと思います。書店で手に取ってわかりやすいものを探されたらどうでしょうか。
      https://www.wordvbalab.com/page-1544/

  2. giiv より:

    ご返答ありがとうございます。
    やはりoffice製品に特化しているだけあってvbaなんですね。
    私はpythonの基礎文法をおさえた程度で、excelに関しては基本的な関数の知識もない状態ですが、word やexcel、スプレッドシートなどは今後もしばらく消えないと思うのでITのリテラシーをつけるためにも勉強してみようと思います。

    ちなみにword javascript apiに関しては日本語の情報が非常に乏しいような状態ですが、あまり実用的ではないのでしょうか?
    vbaと比べればJavaScriptはまだ汎用性があると思うので勉強するか検討しております。

    • 新田順也 より:

      giivさま

      > ちなみにword javascript apiに関しては日本語の情報が非常に乏しいような状態ですが、あまり実用的ではないのでしょうか?

      用途でご検討ください。

      人に配布する予定がないのであれば、VBAが一番簡単で一番融通が利きます。
      まずはWord VBAではじめて、何をするのか決まってからWord JavaScript APIにしたほうがよいのか検討されたらどうでしょうか。すでにやりたいこと(利用するメソッド、プロパティ、オブジェクト)が決まっているのであれば、Word JavaScript APIでできるのか、やりやすいのか調べられたらよいと思います。

      Word JavaScript APIはウェブベースの技術なので、Word OnlineでもWindowsやMacのパソコンにインストールしたWordでも使えます。そういう意味で汎用性がありますが、Word用のアプリとしてはできることが限られています。アプリを配布して多くの人に使ってもらうような場合にはおすすめです。
      少しずつ利用できるメソッドやプロパティーの範囲が広がってきてはいますが、自動化の種類によっては対応できないことがあります。

トップへ戻る