Documentの終端を取得する(Word)
Documentの終端を取得する(Word)
目次
こんなことができます
Wordドキュメントの終端のRange
オブジェクトを、簡単に取得することができる。
きっかけ
Wordドキュメントの末尾の部分のRange
オブジェクトを取得したいなあと思って、ちょろっとコードを書いてみたら、
Dim tgtDoc As Document Set tgtDoc = ThisDocument Dim tmpRange As Range Set tmpRange = tgtDoc.Range(tgtDoc.Range.End - 1, tgtDoc.Range.End - 1)
という、ぶさいくにもほどがあるコードになってしまったので、
これは外出ししなくては!
となったのがきっかけ。
それ以上でもそれ以下でもない。
Function化
コードは次の通り。
リスト1 標準モジュール
Private Function getLastEdge( _ Optional ByVal TgtDocument As Document) As Range If TgtDocument Is Nothing Then Set TgtDocument = ActiveDocument Dim ret As Range With TgtDocument Set ret = .Range(.Range.End - 1, .Range.End - 1) End With Set getLastEdge = ret End Function
もはや説明は必要ないだろう。ド直球。
使ってみる
たとえば、このようなWordドキュメントがあるとする。
画像ではややわかりにくいかも知れないが、現在カーソルが「しかしながら」で始まる段落の先頭にある。
この状態で、次のコードを実行してみる。
リスト2 標準モジュール
Private Sub test00() Dim tgtDoc As Document Set tgtDoc = ThisDocument Dim tmpRange As Range Set tmpRange = getLastEdge(tgtDoc) '……(1)' Call tmpRange.Select '……(2)' End Sub
もはや言うまでもないことだが、(1)
の
Set tmpRange = getLastEdge(tgtDoc)
で、変数tmpRange
に文書末尾のRange
オブジェクトをぶち込み、(2)
の
Call tmpRange.Select
で、その部分をSelect
したわけである。
したがって、これまた非常に分かりづらい画像で恐縮至極だが、
このように、ちゃんと文書末尾にカーソルが移動している。
ばっちり。
おわりに
「車輪の再発明」みたいなことになっていたら教えろ教えてください。