substコマンドと同じことをするDefineDosDevice

substコマンドは便利

subst h: c:\windows

とかやるとwindowsフォルダをh:ドライブとしてアクセスできる。

WindowsのAPIで同じことをやりたい

DefineDosDeviceという便利なAPIがある。

DefineDosDevice(0, _T("h:"), _T("C:\\windows"));

で上記のsubstと同じ結果になる。

共有フォルダを扱うには一工夫

共有フォルダのようにUNCにドライブレターを割り当てる場合は一工夫が必要。\\FileServer?\SharedFolderにi:ドライブを割り当てる場合は以下。

DefineDosDevice(DDD_RAW_TARGET_PATH, _T("i:"), _T("\\??\\UNC\\FileServer\\SharedFolder"));

ちなみに、こうやって割り当てたドライブはエクスプローラから見ると「切断したネットワークドライブ」と表示される。net useコマンドと同じことをするWNetAddConnectionあたりを使えるなら、そちらの方が良いかもしれない。

連続していないSelectionはVBAから取得できない

Wordは連続していない複数ができる

いくつか段落を作り、Ctrlキーを押しながら段落や文字を選択すると、複数の文字や段落を選択できる。このとき、文字や段落が連続していなくても良い。

VBAからアクセスできない

連続せず、飛び飛びに複数選択されているとVBAからはアクセスできない。そういう仕様。