兼業主夫 ときどき 指揮者 のち ギーク?

2017-01-24

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」のメンバーという訳だ。

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

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hiko_s/20170124/p1
リンク元