Wordを扱う際にVBAとVBとの違いに戸惑わないための備忘録

VBでWordを操作する処理を作る際、Word VBAで動作を確認したものをVBに持ってくるというやり方を基本的にしている。

が、それだと上手く行かないことがあったので、ここに備忘録としてメモしておきたい。

例えばこれ。

VBA

Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend

単純に考えると、下記のような感じで動きそうな気がする。

Word.Selection.MoveLeft(wdCharacter, 1, wdExtend)

(「Microsoft.Office.Interop.Word」は、以下「Word」と表記)

でも動かない。

「'wdCharacter'は宣言されていません。アクセスできない保護レベルになっています」
「'wdExtend'は宣言されていません。アクセスできない保護レベルになっています」

と怒られてしまう。

ああそうか、と思って

Word.Selection.MoveLeft(Word.wdCharacter, 1, Word.wdExtend)

とやっても、

「'wdCharacter'は'Microsoft.Office.Interop.Word'のメンバーではありません」
「'wdExtend'は'Microsoft.Office.Interop.Word'のメンバーではありません」

と怒られる。

正解は

Word.Selection.MoveLeft(Word.WdUnits.wdCharacter, 1, Word.WdMovementType.wdExtend)

であった。

「wdCharacter」は「Microsoft.Office.Interop.Word.WdUnits」のメンバーであり、「wdExtend」は「Microsoft.Office.Interop.Word.WdMovementType」のメンバーという訳だ。

分かればどうという事はないけれど、ちょっと躓いたのでメモ。