「word マクロ 文書の先頭にカーソル」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
文書の先頭にカーソルを移動するWordマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
アクティブな文書で、文書の先頭にカーソルを移動したいのであれば、ショートカットキー[Ctrl]+[Home]で済んでしまいます。
マクロを使いたいということですから、複数の文書でカーソルを文書の先頭に移動したいということかな、と想像しています。
どこかに提出するWordファイルが大量にあるけれど、カーソルの位置が文書の先頭にないようなときに、すべての文書のカーソル位置を文書の先頭にしたいというニーズは、特に日本の組織ではありそうに思えます。
まずは、アクティブな文書で、カーソルを文書の先頭に移動するマクロを確認しましょう。
Bookmarkオブジェクトで文書の先頭にカーソルを移動するサンプルマクロ
Wordマクロを、自分で作れるようになりたいとは思わない、ネット上に存在するコードをコピペすればいい、という方にとって理解しやすいのは、以下のようなマクロでしょうか。
ActiveDocument.Bookmarks("\StartOfDoc").Select
End Sub
Bookmarksプロパティの引数に「\StartOfDoc」という文字列を指定すると、「Start Of a Document」というとおり、文書の先頭を表すBookmarkオブジェクトを取得できます。
取得したBookmarkオブジェクトのSelectオブジェクトで文書の先頭が選択されます。(つまりカーソルが文書の先頭に移動します。)
Rangeメソッドで文書の先頭にカーソルを移動するサンプルマクロ
Wordマクロを自分で作れるようになりたいと考えてらっしゃる方には、以下のようなRangeオブジェクトを使ったマクロを理解することをおすすめします。
ActiveDocument.Range(0, 0).Select
End Sub
Wordマクロを自分で作れるようになりたい場合、文書の特定領域・特定範囲を表す、Rangeオブジェクトの理解が必須です。
Rangeオブジェクトを取得する方法はいろいろありますが、DocumentオブジェクトのRangeメソッドを使う方法が、
Rangeオブジェクトを選択する一番の基本です。
そんなDocument.Rangeメソッドを使ったのが上記のマクロです。
Wordマクロを自分で作れるようになりたいとお考えの方は、Document.Rangeメソッドのヘルプを読んでみることと、
ActiveDocument.Range(0, 0).Select
というコードの、Rangeの2つの引数に指定された数値を変更して、何が選択されるのかを確認することを、おすすめしておきます。
WordのRangeとExcelのRangeはまったくの別物
ちなみに、Excelマクロの経験がある方の場合、ExcelにもRangeオブジェクトがあるために混乱するかもしれませんが、そもそもWordとExcelというまったく別のアプリケーションを操作しているわけですから、当然ながらExcelのRangeオブジェクトと、
WordのRangeオブジェクトは、
まったくの別物です。
たまたま同じ「Range」という名前のオブジェクトがまったく別のアプリケーションに存在しているだけです。
開いている全文書でカーソルを先頭に移動するサンプルマクロ
で、以下のようなマクロにすれば、開いている全文書でカーソルを先頭に移動できます。
Dim doc As Document
For Each doc In Documents
doc.Range(0, 0).Select
Next
End Sub
開いている全文書に対してFor Each~Nextループを回して、
For Each doc In Documents
Document.Rangeメソッドを使って文書の先頭を選択しています。
doc.Range(0, 0).Select
- 『Excel VBAユーザーのためのWord VBA入門(1)』出ました。
- 『Word VBA入門』に登場するオブジェクトごとのプロパティ一覧
- 『Word VBA入門』に登場するオブジェクトごとのメソッド一覧
最終更新日時:2021-05-20 13:48
- Newer:ListObject・テーブルに列を追加するExcelマクロ
- Older:配列の中身をMsgBox関数で表示する
Home » ワードマクロ・Word VBAの使い方 » ブックマーク » 文書の先頭にカーソルを移動するWordマクロ