【Word VBA】「貼り付け時に自動調整する」をオフにして貼り付けるWordマクロ

2017年4月19日

今の仕事で、Word文書上でウェブのHTMLを編集しています。

画像のリンクを挿入したりタグを貼り付けたりしています。このときに困るのが、Wordのおせっかい機能なんです。

HTMLなのでたとえば、以下のような記述があります。

<img src="●">

この●部分に画像ファイルのリンクを貼り付けます。このとき、Wordはご丁寧にも、半角スペースも自動的に挿入してしまうのです。

これは、Wordの「貼り付け時に自動調整する」機能が働いているからなのです。

そこで、文字列を貼り付けるときに一時的に「貼り付け時に自動調整する」をオフにするマクロを作りました。

このマクロでできること

貼り付けるときに、「貼り付け時に自動調整する」をオフにします。

貼り付けの形式は、「テキスト形式」にします。

貼り付けが終わると、「貼り付け時に自動調整する」を元の設定に戻します。

マクロの解説

「貼り付け時に自動調整する」というのは、[オプション]ダイアログボックスで設定できます。

デフォルトではこの値がオンになっています。たとえば、英文を作成時にカーソル位置に単語を貼り付けると、自動的にこの単語の直後に半角スペースが挿入されます。

単語と単語がくっついてしまわないので非常に便利なのです。

ところが今回の場合、勝手に半角スペースが入ってしまうのは危険なのです。

そこで、このオプション設定項目を文字列を貼り付けるときだけオフにするのです。(9行目)

テキスト形式での文字列の貼り付けは、12行目で実行しています。

マクロ


Sub 貼り付けの自動調整をオフにして貼り付ける()

 Dim blnPasteSmartCutPaste As Boolean
 
 '「貼り付け時に自動調整する」現状の設定を保存
 blnPasteSmartCutPaste = Options.PasteSmartCutPaste
 
 '「貼り付け時に自動調整する」をオフにする
 Options.PasteSmartCutPaste = False
 
 'テキスト形式で貼り付ける
 Selection.PasteSpecial DataType:=wdPasteText
 
 '「貼り付け時に自動調整する」設定を元に戻す
 Options.PasteSmartCutPaste = blnPasteSmartCutPaste
 
End Sub

-コード
-,