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」のメンバーという訳だ。
分かればどうという事はないけれど、ちょっと躓いたのでメモ。