• 検索結果がありません。

VB参考資料 Wordに依る利用

N/A
N/A
Protected

Academic year: 2021

シェア "VB参考資料 Wordに依る利用"

Copied!
17
0
0

読み込み中.... (全文を見る)

全文

(1)

■ Application オブジェクト ■

Word アプリケーションを表す。Application オブジェクトには、最上位レベルのオブジェクトを取得するプロパ ティ及びメソッドが含まれる。例えば、ActiveDocument プロパティは Document オブジェクトを取得する。 ■ 使い方

Application プロパティを使用して Application オブジェクトを取得する。次の使用例は、Word のユーザー名を 表示する。 MsgBox Application.UserName 一般的なユーザーインターフェイスオブジェクト、例えば、作業中の文書を表すActiveDocument プロパティ等 のプロパティやメソッドの多くは、Application オブジェクト修飾子を指定しないで使用出来る。例えば Application.ActiveDocument.PrintOut と記述する代わりに、ActiveDocument.PrintOut と記述する事が出来 る。Application オブジェクト修飾子を指定しないで使用出来るプロパティやメソッドは、グローバルで有ると 看做される。オブジェクトブラウザでグローバルプロパティやメソッドを表示するには、『クラス』ボックスの先 頭に有る『グローバル』をクリックする。 ■ 解説 オートメーション(以前のOLE オートメーション)を使用して、別のアプリケーションから Word を制御する には、CreateObject、又は、GetObject 関数を使用して Word の Application オブジェクトを取得する。次の使 用例は、Excel を使って、Word が未だ起動されて居ない場合は Word を起動し、既存の文書を開く。

Set wrd = GetObject(, "Word.Application") wrd.Visible = True

wrd.Documents.Open "C:¥My Documents¥Temp.doc" Set wrd = Nothing ■ 他のアプリケーションから Word を自動化する オートメーション機能を使用すると、他のアプリケーションのオブジェクト、プロパティ、及び、メソッドを参 照して、データを取得、編集、及び、エクスポートする事が出来る。他のアプリケーションから参照出来る Application オブジェクトは、オートメーションオブジェクトと呼ばれる。 オートメーション機能を使用して、他のアプリケーションから Word を使用出来る様にするには、先ず、Word のApplication オブジェクトへの参照を作成する必要が有る。Visual Basic では、CreateObject、又は、GetObject 関数を使用して、Word の Application オブジェクトへの参照を取得する。例えば、Excel のプロシージャで、次 のコードを記述する。

Dim wrd As Word.Application

Set wrd = CreateObject("Word.Application")

W

(2)

此れで、Word の Application オブジェクトがオートメーションで使用する事が出来る様に成る。Word の Application オブジェクトのオブジェクト、プロパティ、及び、メソッドを使用すると、Word を制御する事が出 来る。例えば、次のコードは、Word の新しい文書を作成する。

wrd.Documents.Add

CreateObject 関数を使用すると Word セッションを起動出来る。Application オブジェクトを参照する変数が無 効に成っても、オートメーションで此のセッションが閉じられる事は無い。オブジェクト参照にNothing キーワ ードを設定しても、Word は閉じられない。Word アプリケーションを閉じるには、Quit メソッドを使用する。 次のExcel の使用例は、Word のスタートアップパスを表示する。スタートアップパスの表示後、Quit メソッド を使用して、Word の新しいインスタンスを閉じる。

Set wrd = CreateObject("Word.Application")

MsgBox wrd.Options.DefaultFilePath(wdStartupPath) wrd.Quit

■ Document オブジェクト ■

Document オブジェクトは、文書を表すオブジェクトで有る。Document オブジェクトは、Documents コレク ションのメンバーで有る。Documents コレクションには、Word で現在開かれて居る総ての Document オブジ ェクトが含まれる。

■ 使用法

Documents( index ) を使用して Document オブジェクトを取得する。引数 index には文書名、又は、インデッ クス番号を指定する。次の使用例は、変更を保存せずに、Report.doc と謂う名前の文書を閉じる。 Documents("Report.doc").Close SaveChanges:=wdDoNotSaveChanges インデックス番号は、Documents コレクションでの文書の位置を表す。次の使用例は、Documents コレクショ ン内で1 番目の文書を選択する。 Documents(1).Activate ■ 解説 ActiveDocument プロパティを使用して、フォーカスの有る文書を参照する事が出来る。次の使用例は、Activate メソッドを使用してdoc1 と謂う名前の文書をアクティブにし、用紙を横向きに設定して、文書を印刷する。 Documents("doc1").Activate ActiveDocument.PageSetup.Orientation = wdOrientLandscape ActiveDocument.PrintOut ■ Document オブジェクトを使用する

Visual Basic で、ファイルを変更するメソッドは、Document オブジェクト、又は、Documents コレクションの メソッドで有る。

(3)

新しい文書を作成する

Documents コレクションには、開いて居る文書が総て含まれる。新しい文書を作成するには、Add メソッドを 使用してDocument オブジェクトを Documents コレクションに追加する。次の命令は、新しい文書を作成する。 Documents.Add

新しい文書を作成する場合、戻り値をオブジェクト変数に格納する事が望ましい。Add メソッドを使用して、新 しい文書を参照するDocument オブジェクトを取得する。次の使用例は、Add メソッドで返された Document オブジェクトを、オブジェクト変数newDoc に格納する。其の後、必要に応じて、Document オブジェクトのプ ロパティやメソッドを設定する。newDoc を使用すると、新しい文書を簡単に制御する事が出来る。

Dim wrd As Word.Application Dim newDoc As Word.Document

Set wrd = CreateObject("Word.Application") Set newDoc = wrd.Documents.Add

With newDoc

.Content.Font.Name = "MS ゴシック" End With

文書を開く

既存の文書を開くには、Documents コレクションに対して Open メソッドを使用する。次のコードは、MyFolder と謂う名前のフォルダに保存されて居るMyDocument.doc と謂う名前の文書を開く。

Set newDoc = wrd.Documents.Open( "C:¥MyFolder¥MyDocument.doc" ) 新しい文書を保存する 1 つの文書に名前を付けて保存するには、Document オブジェクトに対して SaveAs メソッドを使用する。次の コードは、作業中の文書にTemp.doc と謂う名前を付けて、現在のフォルダに保存する。 wrd.ActiveDocument.SaveAs( "Temp.doc" ) 特定のドキュメントを保存するには、下記の様に記述する。 newDoc.SaveAs( "Temp.doc" )

引数FileName には、ファイル名、又は、絶対パス(例えば、C:¥Documents¥Temporary File.doc)以外を指 定する事は出来ない。

文書を閉じる

1 つの文書を閉じるには、Document オブジェクトに対して Close メソッドを使用する。次のコードは、Sales.doc と謂う名前の文書を閉じて、保存する。

(4)

コレクションに対してClose メソッドを使用すると、開いて居る文書を総て閉じる事が出来る。次のコードは、 此れ迄に加えた変更を保存せずに、文書を総て閉じる。

Documents.Close SaveChanges:=wdDoNotSaveChanges

次の使用例は、文書を閉じる前に、文書を保存するか何うかを確認するメッセージを、文書毎に表示する。 For Each aDoc In Documents

aDoc.Save NoPrompt:=False aDoc.Close Next 文書を作業の対象にする 作業中の文書を変更するには、Document オブジェクトに対して Activate メソッドを使用する。次のコードは、 MyDocument.doc と謂う名前の開いて居る文書を、作業の対象にする。 Documents("MyDocument.doc").Activate 文書が開いて居るか何うかを判断する

文書が開いて居るか何うかを判断するには、For Each...Next ステートメントを使用して Documents コレクショ ンを列挙する。次の使用例は、Sample.doc と謂う名前の文書が開いて居る場合は、此の文書を作業の対象とす る。Sample.doc が現在開いて居ない場合は、此の文書を開く。

For Each aDoc In Documents

If InStr(1, aDoc.Name, "sample.doc", 1) Then aDoc.Activate

Else

docFound = False End If

Next aDoc

If docFound = False Then Documents.Open FileName:="C:¥Documents¥Sample.doc" 作業中の文書を参照する 文書を名前(Documents("Sales.doc") 等)又は、インデックス番号で参照する代わりに、ActiveDocument プロ パティを使用すると、作業中の文書(フォーカスの有る文書)を参照するDocument オブジェクトを取得出来る。 次の使用例は、作業中の文書の名前を表示する。開いて居る文書が無い場合は、メッセージを表示する。 If Documents.Count >= 1 Then MsgBox ActiveDocument.Name Else MsgBox "開いて居る文書は有りません。" End If 文書を印刷する

(5)

次の使用例は、作業中の文書の現在のページを印刷する。 ActiveDocument.PrintOut Range:=wdPrintCurrentPage 次の使用例は、現在のフォルダの総ての文書を印刷する。.doc と謂う拡張子を持つ総てのファイルの名前を取得 するには、Dir 関数を使用する。 adoc = Dir("*.doc") While adoc <> "" Application.PrintOut FileName:=adoc adoc = Dir() Wend 次の使用例は、作業中のウィンドウの文書の最初の3 ページを印刷する。

ActiveDocument.ActiveWindow.PrintOut Range:=wdPrintFromTo, From:="1", To:="3" 次の使用例は、作業中の文書のコメントを印刷する。

If ActiveDocument.Comments.Count >= 1 Then

ActiveDocument.PrintOut Item:=wdPrintComments End If

次の使用例は、用紙1 枚に付き 6 ページ分が含まれる様に設定して、作業中の文書を印刷する。 ActiveDocument.PrintOut PrintZoomColumn:=3, PrintZoomRow:=2

次の使用例は、作業中の文書を実際のサイズの75%に縮小して印刷する。

ActiveDocument.PrintOut PrintZoomWidth:=0.75*(8.5*1440), PrintZoomHeight:=0.75*(11*1440)

次の使用例は、印刷プレビュー以外の表示モードで有る場合、作業中の文書を印刷プレビューに切り替える。 If Application.PrintPreview = False Then

ActiveDocument.PrintPreview End If

PrintPreview メソッドの他に、PrintPreview プロパティに True 又は False を設定すると、印刷プレビューを 他の表示モードに切り替える事が出来る。亦、View オブジェクトの Type プロパティに定数 wdPrintPreview を 設定すると、表示モードを変更する事が出来る。 ■ Range オブジェクト ■ Range オブジェクトは、文書の隣接する領域を表すオブジェクトで有る。各 Range オブジェクトは、開始文字 位置、及び、終了文字位置で定義される。文書でブックマークを使用する場合と同様に、Visual Basic のプロシ ージャでは文書の特定の部分を指定する時に Range オブジェクトを使用する。但し、ブックマークとは異なり Range オブジェクトを定義するプロシージャの実行中而巳、オブジェクトが存在する。

(6)

※ Range オブジェクトは選択範囲から独立して居る。詰まり、選択範囲を変更しなくてもオブジェクトを定義 し操作出来る。亦、文書では複数の範囲を定義出来るが、各ウィンドウ枠には1 つの選択範囲しか存在出来ない。 使用法

Range メソッドを使用して、特定の開始文字位置、及び、終了文字位置で定義される Range オブジェクトを取 得する。次の使用例は、作業中の文書の最初の10 文字を参照する Range オブジェクトを取得する。

Set myRange = ActiveDocument.Range(Start:=0, End:=10)

Range プロパティを使用して、別のオブジェクトの開始位置と終了位置で定義される Range オブジェクトを取 得する。Range プロパティは多くのオブジェクト(例えば、Paragraph、Bookmark、Cell 等)で使用出来る。 次の使用例は、作業中の文書の最初の段落を参照するRange オブジェクトを取得する。

Set aRange = ActiveDocument.Paragraphs(1).Range

次の使用例は、作業中の文書の2 番目の段落から 4 番目の段落迄を参照する Range オブジェクトを取得する。 Set aRange = ActiveDocument.Range( _

Start:=ActiveDocument.Paragraphs(2).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) ■ Range オブジェクトを使用する

通常、Visual Basic を使用する場合は、文書内の領域を指定してから、其の領域に対して文字列の挿入や書式の 設定等の操作を実行する。例えば、文書内の特定の領域で、単語や句を検索するマクロを作成する場合、文書内 の特定の領域は、Range オブジェクトで表す事が出来る。Range オブジェクトが指定されると、Range オブジ ェクトのメソッドやプロパティを適用して、指定範囲の内容を変更する事が出来る。

Range オブジェクトは、文書内の連続する領域を参照する。各 Range オブジェクトは、指定範囲の開始位置と 終了位置で定義される。文書のブックマークと同じ様に、Visual Basic プロシージャの中で Range オブジェクト を使用し、文書の特定の範囲を指定する。Range オブジェクトで指定する範囲は、カーソル位置でも、文書全体 でも構わない。但し、ブックマークとは異なり、Range オブジェクトは、此れを定義するプロシージャが実行さ れて居る間而巳、有効で有る。

Start、End、及び、StoryType プロパティを使用すると、固有に Range オブジェクトを識別出来る。Start 及び End プロパティでは、Range オブジェクトの指定範囲の開始と終了の文字の位置を夫々れ設定したり、取得する 事が出来る。文書の先頭の文字の位置は 0 で、其の次が 1、以降は順に続く。ストーリーには 11 種類有り、 StoryType プロパティの WdStoryType 定数で夫々れ表される。 ※ Range オブジェクトは、選択範囲とは別の物で有る。詰まり、現在の選択範囲を変更する事なく、特定の指 定範囲を定義、及び、変更出来る。文書のウィンドウ枠の選択範囲は1 つ丈だが、文書内には複数の指定範囲を 定義出来る。 Range メソッドの使い方

Range メソッドは、指定された文書で Range オブジェクトを作成する時に使用する。Document オブジェクト から使用出来るRange メソッドは、指定範囲の開始位置と終了位置が指定されると、メインテキストストーリー

(7)

に有るRange オブジェクトを返す。次の使用例は、Range オブジェクトを作成し、此れを MyRange に格納す る。

Set myRange = ActiveDocument.Range(Start:=0, End:=10)

MyRange は、作業中の文書の先頭の 10 文字を参照する。MyRange に保存されて居る Range オブジェクトに プロパティやメソッドを適用すると、Range オブジェクトが作成されて居る事が解る。次の使用例は、作業中の 文書の先頭の10 文字に太字を設定する。

Set myRange = ActiveDocument.Range(Start:=0, End:=10) myRange.Bold = True

Range オブジェクトを何度も参照する必要が有る場合は、Set ステートメントを使用して Range オブジェクトを 変数に格納する。但し、Range オブジェクトを参照するのが 1 度丈の場合は、オブジェクトを変数に格納する必 要は無い。コードで1 度丈指定範囲を識別し、Bold プロパティを変更しても結果は同じで有る。

ActiveDocument.Range(Start:=0, End:=10).Bold = True

指定範囲には、ブックマークと同じ様に、複数の文字を指定する事も、文書内の特定の位置を指定する事も出来 る。次の使用例では、Range オブジェクトの指定範囲の開始位置と終了位置に、同じ値が指定されて居る。詰ま り、指定範囲には文字列が含まれない。次の使用例は、作業中の文書の先頭に文字列を挿入する。

Set myRange = ActiveDocument.Range(Start:=0, End:=0) myRange.InsertBefore "Hello "

此の使用例に示す様に、指定範囲の開始位置と終了位置を文字の位置の番号で定義する事が出来る。Selection、 Bookmark、又は、Range 等のオブジェクトに対して Start 及び End プロパティを使用する事も出来る。次の 使用例は、2 番目の段落の先頭から 3 番目の段落の末尾迄の Range オブジェクトを作成する。

Set myDoc = ActiveDocument

Set myRange = myDoc.Range(Start:=myDoc.Paragraphs(2).Range.Start, _ End:=myDoc.Paragraphs(3).Range.End)

Range プロパティの使い方

Range プロパティは、Paragraph、Bookmark、Cell 等、様々なオブジェクトで有効で、Range オブジェクト を取得する為に使用される。次の使用例は、作業中の文書の最初の段落を参照するRange オブジェクトを取得す る。

Set myRange = ActiveDocument.Paragraphs(1).Range

Range オブジェクトを取得したら、其のプロパティやメソッドを使用して、Range オブジェクトを変更出来る。 次の使用例は、作業中の文書の2 番目の段落を選択する。

ActiveDocument.Paragraphs(2).Range.Select

同じRange オブジェクトに複数のプロパティやメソッドを適用する必要が有る場合は、With…End With 構造を 使用出来る。次の使用例は、作業中の文書の最初の段落の文字列に書式を設定する。

(8)

Set myRange = ActiveDocument.Paragraphs(1).Range With myRange .Bold = True .ParagraphFormat.Alignment = wdAlignParagraphCenter .Font.Name = "Arial" End With Range オブジェクトを再定義する

既存の Range オブジェクトを再定義するには SetRange メソッドを使用する。次の使用例は、myRange を現在 の選択範囲に定義する。次に、SetRange メソッドを使用して、現在の選択範囲に続く 10 文字も参照する様に myRange を再定義する。

Set myRange = Selection.Range

myRange.SetRange Start:=myRange.Start, End:=myRange.End + 10

※ マクロをデバッグする場合、Select メソッドを使用すると、Range オブジェクトが正しい文字列の指定範囲 を参照して居るか何うかを確認出来る。例えば、次の使用例は、aRange と謂う名前の Range オブジェクトを選 択する。aRange オブジェクトは、作業中の文書の 2 番目、及び、3 番目の段落を参照して居る。

Set aRange = ActiveDocument.Paragraphs(2).Range

aRange.SetRange Start:=aRange.Start, End:=ActiveDocument.Paragraphs(3).Range.End 指定範囲を割り当てる

既存のRange オブジェクトを変数に格納する方法は、幾つか有る。此処では、2 種類の方法に付いて解説する。 次の使用例のRange1 及び Range2 は Range オブジェクトを参照する。例えば、次のコードを記述すると、作 業中の文書の最初の単語をRange1 に、2 番目の単語を Range2 に格納する。

Set Range1 = ActiveDocument.Words(1) Set Range2 = ActiveDocument.Words(2)

Range オブジェクト変数を他の Range オブジェクト変数に等しく成る様に設定する

次の命令は、Range2 と謂う名前の指定範囲変数が、Range1 と同じ位置を表す様に設定する。 Set Range2 = Range1

此れで、同じ指定範囲を表す変数が2 つ出来た事に成る。Range2 の指定範囲の開始位置や終了位置、又は、指 定範囲内の文字列を操作すると、Range1 にも影響する。同じ様に Range1 の指定範囲や文字列を操作した場合 もRange2 に影響する。

次のコードを記述すると、Range2.Text = Range1.Text と同じ結果が得られる。此のコードは、Range1 の既定 プロパティで有るText プロパティを、Range2 の既定プロパティに設定する。此の場合、オブジェクトの実際の 参照先は変更されない。

(9)

指定範囲(Range2 及び Range1)の内容の文字列は同じで有っても、文書内の別の位置、又は、別の文書を指 して居る事が有る。

Duplicate プロパティの使い方

次の使用例は、Range1 と同じ指定範囲の開始位置と終了位置、及び、文字列を持つ Range2 を、Range オブジ ェクトの複製として作成する。

Set Range2 = Range1.Duplicate

此の場合、Range1 の指定範囲の開始位置、又は、終了位置を変更しても、Range2 には影響しない。亦、Range2 の指定範囲を変更してもRange1 には影響しない。但し、此の 2 つの指定範囲は文書内の同じ位置を指して居る 為、一方の指定範囲で文字列を変更すると、他方の指定範囲内の文字列も変更されて仕舞う。 ■ Section オブジェクト ■ Section オブジェクトは、選択範囲、指定範囲、又は、文書の 1 つのセクションを表すオブジェクトで有る。Section オブジェクトは、Sections コレクションのメンバーで有る。Sections コレクションには、選択範囲、指定範囲、 又は、文書の総てのセクションが含まれる。 使用法

Sections(index) を使用して 1 つの Section オブジェクトを取得する。index にはインデックス番号を指定する。 次の使用例は、作業中の文書の最初のセクションで左右のページ余白を設定する。 With ActiveDocument.Sections(1).PageSetup .LeftMargin = MillimetersToPoints(15) .RightMargin = MillimetersToPoints(15) End With Add 又は InsertBreak メソッドを使用して、新しいセクションを文書に追加する。次の使用例は、作業中の文書 の先頭に新しいセクションを追加する。

Set myRange = ActiveDocument.Range(Start:=0, End:=0) ActiveDocument.Sections.Add Range:=myRange

myRange.InsertParagraphAfter

次の使用例は、選択範囲の最初の段落の上にセクション区切りを追加する。 Selection.Paragraphs(1).Range.InsertBreak Type:=wdSectionBreakContinuous

※ 指定された Section オブジェクトの Headers 及び Footers プロパティは HeadersFooters オブジェクトを返 す。

■ Paragraph オブジェクト ■

(10)

オブジェクトは、Paragraphs コレクションのメンバーで有る。Paragraphs コレクションには、選択範囲、指定 範囲、又は、文書の総ての段落が含まれる。

使用法

Paragraphs(index) を使用して 1 つの Paragraph オブジェクトを取得する。index にはインデックス番号を指定 する。次の使用例は、作業中の文書の最初の段落を右揃えに配置する。 ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphRight Add、InsertParagraph、InsertParagraphAfter 又は InsertParagraphBefore メソッドを使用して、新しい空白 の段落を文書に追加する。次の使用例は、選択範囲の最初の段落の前に段落記号を追加する。 Selection.Paragraphs.Add Range:=Selection.Paragraphs(1).Range 次の使用例も、選択範囲の最初の段落の前に段落記号を追加する。 Selection.Paragraphs(1).Range.InsertParagraphBefore ■ 文書の一部を操作する ■ Visual Basic に含まれるオブジェクトを使用する事で、文字、単語、文、段落、セクション等の文書の構成要素 を変更出来る。次の表は、文書の此等の構成要素に対応するプロパティと、其のプロパティが取得するオブジェ クトを示す。 式 取得するオブジェクト Words(index) Range Characters(index) Range Sentences(index) Range Paragraphs(index) Paragraph Sections(index) Section 此等のプロパティをインデックスを指定しないで使用した場合、同じ名前のコレクションオブジェクトを取得す る。例えば、Paragraphs プロパティでは Paragraphs コレクションオブジェクトを取得する事に成る。但し、 此等のコレクション内の項目をインデックスで識別すると、表の2 列目に表示されて居るオブジェクトを取得出 来る。例えば、Words(1) を指定すると Range オブジェクトを取得する。Range オブジェクトを取得したら、此 のオブジェクトに関連するプロパティやメソッドを使用して、Range オブジェクトを変更出来る。例えば、次の コードは、選択範囲内の先頭の単語をクリップボードにコピーする。

Selection.Words(1).Copy

※ Paragraphs 及び Sections コレクションのメンバーは、Range オブジェクトではなく、コレクションの単数 形で有る。但し、Range オブジェクトを取得する Range プロパティは、Paragraph オブジェクト、及び、Section オブジェクトの両方で使用出来る。例えば、次のコードは、作業中の文書内の先頭の段落をクリップボードにコ ピーする。

(11)

上の表に示した文書の構成要素を取得するプロパティは総て、Document、Selection、及び、Range オブジェク トで使用出来る。次の使用例は、Document、Selection、及び、Range オブジェクトで此等のプロパティを使用 する方法を示す。 次の使用例は、作業中の文書の中で、先頭の英単語を大文字に設定する。 ActiveDocument.Words(1).Case = wdUpperCase 次の使用例は、現在のセクションの下余白を10mm に設定する。 Selection.Sections(1).PageSetup.BottomMargin = MillimetersToPoints(10) 次の使用例は、作業中の文書の、文字列の行間を2 倍に設定する。Content プロパティは Range オブジェクト を取得する。 ActiveDocument.Content.ParagraphFormat.Space2 文書の構成要素の集合を変更する 様々な構成要素の集合(文字、単語、文、段落、又は、セクション)で構成されて居る文字列の指定範囲を変更 するには、Range オブジェクトを作成する必要が有る。Range メソッドに指定範囲の開始位置、及び、終了位置 を指定して、Range オブジェクトを作成する。例えば、次のコードは、作業中の文書の先頭の 10 文字を参照す るRange オブジェクトを作成する。

Set myRange = ActiveDocument.Range(Start:=0, End:=10)

Range オブジェクトに対してStart 及びEnd プロパティを使用すると、構成要素の集合を参照する新しいRange オブジェクトを作成出来る。例えば、次のコードは、作業中の文書の先頭の3 つの単語を参照する Range オブ ジェクト(myRange)を作成する。

Set Doc = ActiveDocument

Set myRange = Doc.Range(Start:=Doc.Words(1).Start, End:=Doc.Words(3).End)

次の使用例は、2 番目の段落の先頭から 3 番目の段落の末尾迄続く Range オブジェクト(aRange)を作成する。 Set Doc = ActiveDocument

Set myRange = Doc.Range(Start:=Doc.Paragraphs(2).Range.Start, _ End:=Doc.Paragraphs(3).Range.End) ■ Selection オブジェクトを使用する ■ 通常、Word で文書を操作する場合は、最初に文字列を選択してから、書式の設定や、文字列の入力を行う。Visual Basic の場合、文字列を変更する前に文字列を選択する必要は無い。其の代わりに、文書の特定の範囲を参照す るRange オブジェクトを作成する。但し、コードで選択範囲に応答したり、此れを変更する場合は、Selection オブジェクトを使用する。 オブジェクトを選択するには、Select メソッドを使用する。例えば、次のコードは、作業中の文書の先頭の単語

(12)

を選択する。 ActiveDocument.Words(1).Select Selection プロパティを使用して、文書のウィンドウ枠内の有効な選択範囲を参照する Selection オブジェクトを 取得する。文書のウィンドウ枠にはSelection オブジェクトは 1 つ丈で、有効な Selection オブジェクトも 1 つ丈 で有る。例えば、次の使用例は、選択範囲内の段落の、段落書式を変更する。 Selection.Paragraphs.LeftIndent = MillimetersToPoints(10) 次の使用例は、選択範囲の後に『はじめまして』と謂う単語を挿入する。 Selection.InsertAfter Text:="はじめまして" 次の使用例は、選択範囲の文字列に太字を設定する。 Selection.Font.Bold = True マクロ記録機能は、Selection プロパティを使用するマクロを屡作成する。次の使用例は、マクロ記録機能で作成 された物で有る。此のマクロは、文書の先頭の2 つの単語に太字を設定する。 Selection.HomeKey Unit:=wdStory

Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend Selection.Font.Bold = wdToggle

次の使用例は、Selection プロパティを使用しないで同じ処理を実行する。

ActiveDocument.Range(Start:=0, End:=ActiveDocument.Words(2).End).Bold = True ■ 表を使用する ■

■ 表のセルに文字列を挿入する

次の使用例は、作業中の文書に含まれる最初の表の1 番目のセルに、文字列を挿入する。Cell メソッドは Cell オブジェクトを取得する。Range プロパティは Range オブジェクトを取得する。Delete メソッドで既存の文字 列を削除し、InsertAfter メソッドで『セル 1,1』と謂う文字列を挿入する。

If ActiveDocument.Tables.Count >= 1 Then

With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range .Delete .InsertAfter Text:="セル 1,1" End With End If ■ 表の作成、文字列の挿入、書式の設定 次の使用例は、文書の先頭に4 列 3 行の表を挿入する。For Each...Next 構造を使用して、表の中の各セルを順 に参照する。For Each...Next 構造の中では、InsertAfter メソッドを使用して表のセルに文字列(セル 1、セル

(13)

2 等)を追加する。

Set oDoc = ActiveDocument Set oTable = oDoc.Tables.Add( _

Range:=oDoc.Range(Start:=0, End:=0), NumRows:=3, _ NumColumns:=4)

iCount = 1

For Each oCell In oTable.Range.Cells

oCell.Range.InsertAfter "セル " & iCount iCount = iCount + 1

Next oCell

oTable.AutoFormat Format:=wdTableFormatColorful2, _ ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True ■ 表のセルから、文字列而巳 (セル区切り記号を除く) を取得する

次の使用例は、作業中の文書に含まれる最初の表の先頭行の内容を取得し、表示する。 Set oTable = ActiveDocument.Tables(1)

For Each aCell In oTable.Rows(1).Cells

Set myRange = ActiveDocument.Range(Start:=aCell.Range.Start, _ End:=aCell.Range.End - 1)

MsgBox myRange.Text Next aCell

Set oTable = ActiveDocument.Tables(1) For Each aCell In oTable.Rows(1).Cells Set myRange = aCell.Range

myRange.MoveEnd Unit:=wdCharacter, Count:=-1 MsgBox myRange.Text

Next aCell

■ 既存の文字列を表に変換する

次の使用例は、作業中の文書の先頭にタブで区切られた文字列を挿入し、其の文字列を表に変換する。 Set oRange1 = ActiveDocument.Range(Start:=0, End:=0)

oRange1.InsertBefore "1" & vbTab & "2" & vbTab & "3" & vbCr

Set oTable1 = oRange1.ConvertToTable( Separator:=Chr(9), NumRows:=1, NumColumns:=3) ■ 表の各セルの内容を取得する

次の使用例は、文書の最初の表に含まれるセル数に等しい配列を定義する(Option Base 1 を仮定する)。For Each...Next 構造を使用して、表の各セルの内容を取得し、其の文字列を対応する配列要素に代入する。 If ActiveDocument.Tables.Count >= 1 Then

Set oTable = ActiveDocument.Tables(1) iNumCells = oTable.Range.Cells.Count

(14)

ReDim aCells(iNumCells) i = 1

For Each oCell In oTable.Range.Cells Set myRange = oCell.Range

myRange.MoveEnd Unit:=wdCharacter, Count:=-1 aCells(i) = myRange.Text i = i + 1 Next oCell End If ■ 作業中の文書内の総ての表を新しい文書にコピーする 次の使用例は、作業中の文書の表を新しい文書にコピーする。 If ActiveDocument.Tables.Count >= 1 Then

Set oDoc1 = ActiveDocument

Set MyRange = Documents.Add.Range(Start:=0, End:=0) For Each oTable In oDoc1.Tables

oTable.Range.Copy With MyRange .Paste .Collapse Direction:=wdCollapseEnd .InsertParagraphAfter .Collapse Direction:=wdCollapseEnd End With Next End If ■ 作業中の文書の要素を参照する ■ 選択されて居る段落、表、フィールド、又は、其他の文書の構成要素を参照するには、Selection プロパティを使 用して、Selection オブジェクトを取得する。Selection オブジェクトを介して、選択範囲内の総ての段落にアク セスしたり、選択範囲内の先頭の段落にアクセスする事が出来る。次の使用例は、選択範囲内の先頭の段落の回 りに、罫線を設定する。 Selection.Paragraphs(1).Borders.Enable = True 次の使用例は、選択範囲内の総ての段落の回りに、罫線を設定する。 Selection.Paragraphs.Borders.Enable = True 次の使用例は、選択範囲内の最初の表の先頭行に、網掛けを設定する。 Selection.Tables(1).Rows(1).Shading.Texture = wdTexture10Percent 選択範囲に表が含まれて居ない場合、エラーが発生する。選択範囲に表が含まれるか何うかを判断するには、 Count プロパティを使用する。次の使用例は、選択範囲内の最初の表の先頭行に、網掛けを設定する。

(15)

If Selection.Tables.Count >= 1 Then Selection.Tables(1).Rows(1).Shading.Texture = wdTexture10Percent Else MsgBox "選択範囲の中に表は含まれて居ない。" End If 次の使用例は、選択範囲内の各表の先頭行に、網掛けを設定する。For Each...Next ループを使用して、選択範 囲内の各表を順に処理する。 If Selection.Tables.Count >= 1 Then For Each aTable In Selection.Tables

aTable.Rows(1).Shading.Texture = wdTexture10Percent Next aTable

End If

■ 文字列を使用する ■ ■ 文書に文字列を挿入する

Selection 又は Range オブジェクトの前後に文字列を挿入するには、InsertAfter 又は InsertBefore メソッドを 使用する。次の使用例は、作業中の文書の末尾に文字列を挿入する。

ActiveDocument.Content.InsertAfter Text:=" the end." 次の使用例は、選択範囲の前に文字列を挿入する。 Selection.InsertBefore Text:="new text "

InsertBefore 又は InsertAfter メソッドを使用すると、Range 又は Selection オブジェクトの選択範囲が拡張し、 新しい文字列が其処に挿入される。Selection 又は Range オブジェクトの選択範囲を解除して、開始位置、又は 終了位置にカーソルを移動するには、Collapse メソッドを使用する。

■ 文書内の文字列を選択する

文書内の項目を選択するには、Select メソッドを使用する。Select メソッドは、Bookmark、Field、Range、Table 等、様々なオブジェクトから使用出来る。次の使用例は、作業中の文書内の最初の表を選択する。

ActiveDocument.Tables(1).Select

次の使用例は、作業中の文書内の最初のフィールドを選択する。 ActiveDocument.Fields(1).Select

次の使用例は、作業中の文書の先頭から4 つの段落を選択する。此処では、Range メソッドを使用して、此の 4 つの段落を参照する Range オブジェクトを作成する。次に、Range オブジェクトにSelect メソッドを設定する。 Set myRange = ActiveDocument.Range( _

(16)

Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) myRange.Select ■ 文字列に書式を設定する 選択範囲に書式を設定する 次の使用例は、Selection プロパティを使用して、選択されて居る文字列に文字書式、及び、段落書式を設定する。 文字書式のプロパティやメソッドにアクセスするには、Font プロパティを使用し、段落書式のプロパティやメソ ッドにアクセスするには、ParagraphFormat プロパティを使用する。 With Selection.Font .Name = "MS ゴシック" .Size = 14 .AllCaps = True End With With Selection.ParagraphFormat .LeftIndent = MillimetersToPoints(12) .Space1 End With 指定範囲に書式を設定する 次の使用例は、作業中の文書内で、最初の 3 つの段落を参照する Range オブジェクトを定義する。Range (myRange)オブジェクトの書式設定は、Font オブジェクト、及び、ParagraphFormat オブジェクトのプロ パティを設定して行う。

Set myRange = ActiveDocument.Range( _

Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End) With myRange .Font.Name = "MS ゴシック" .ParagraphFormat.Alignment = wdAlignParagraphJustify End With 文字列を挿入し、文字書式及び段落書式を設定する 次の使用例は、作業中の文書の先頭に『はじめに』と謂う単語を追加する。先頭の段落は中央揃えに配置され、 段落の後には12mm の間隔が追加される。『はじめに』と謂う単語には、24 ポイントの MS ゴシックフォントが 設定される。

Set oRange = ActiveDocument.Range(Start:=0, End:=0) With oRange

.InsertAfter Text:="はじめに" .InsertParagraphAfter .Font.Name = "MS ゴシック" .Font.Size = 24

(17)

End With With ActiveDocument.Paragraphs(1) .Alignment = wdAlignParagraphCenter .SpaceAfter = MillimetersToPoints(12) End With 段落前の間隔を 12 ポイント又は 0 ポイントに切り替える 次の使用例は、選択範囲内の最初の段落の、段落前の間隔の書式を切り替える。マクロで、段落前の間隔の現在 の値を取得し、其の値が12 ポイントの場合、段落前の書式を削除する。SpaceBefore プロパティに 0 を設定す る。段落前の間隔が12 ポイント以外の値の場合、SpaceBefore プロパティに 12 ポイントを設定する。 Set oParagraph = Selection.Paragraphs(1)

If oParagraph.SpaceBefore = 12 Then oParagraph.SpaceBefore = 0 Else oParagraph.SpaceBefore = 12 End If 太字の書式を切り替える 次の使用例は、選択されて居る文字列の太字の書式を切り替える。 Selection.Font.Bold = wdToggle 左余白を10mm 丈増やす 次の使用例は、左余白を10mm 丈増やす。PageSetup オブジェクトには、文書の総てのページ設定属性(左余 白、下余白、用紙サイズ等)がプロパティとして用意されて居る。左余白を設定するには、LeftMargin プロパ ティを使用する。 iMargin = ActiveDocument.PageSetup.LeftMargin iMargin = iMargin + MillimetersToPoints(10) ActiveDocument.PageSetup.LeftMargin = iMargin

参照

関連したドキュメント

※ 硬化時 間につ いては 使用材 料によ って異 なるの で使用 材料の 特性を 十分熟 知する こと

 条約292条を使って救済を得る場合に ITLOS

備考 1.「処方」欄には、薬名、分量、用法及び用量を記載すること。

 所得税法9条1項16号は「相続…により取 得するもの」については所得税を課さない旨

利用している暖房機器について今冬の使用開始月と使用終了月(見込) 、今冬の使用日 数(見込)

添付資料 4.1.1 使用済燃料貯蔵プールの水位低下と遮へい水位に関する評価について 添付資料 4.1.2 「水遮へい厚に対する貯蔵中の使用済燃料からの線量率」の算出について

添付資料 4.1.1 使用済燃料貯蔵プールの水位低下と遮へい水位に関する評価について 添付資料 4.1.2 「水遮へい厚に対する貯蔵中の使用済燃料からの線量率」の算出について

2012 年度時点では、我が国は年間約 13.6 億トンの天然資源を消費しているが、その