フレーム ページを作成する
Word では、Web ページデザインのフレームを使用して、情報を整理して簡単にアクセスできます。 フレーム ページはフレームセットとも呼ばれる 2 つ以上のセクションに分割された Web ページで、各フレームは別の Web ページを指します。 フレーム ページのフレームは、別のフレーム ページを指すこともできます。 Word ユーザー インターフェイスでフレームページとフレーム ページを作成する方法については、「Word ヘルプ」を参照してください。
フレームおよびフレーム ページは、一連の HTML タグで作成されます。 フレームおよびフレーム ページを処理する Visual Basic オブジェクト モデルを理解するうえで有効なのは、その HTML タグを調べてみることです。
HTML 形式のフレーム ページ
HTML では、フレーム ページとフレームに含まれるフレームは、FRAMESET> タグと <FRAME> タグの<階層セットを使用して構築されます。 フレームセットには、その内側にフレームおよびほかのフレームセットを作成することができます。 たとえば、次の HTML は、フレームセットを作成し、その内側の上部にフレームを、そのすぐ下にフレームセットを作成します。 下のフレームセットには、左側にフレームが含まれ、右側にフレームセットが含まれます。 右側のフレームセットには 2 つのフレームが含まれ、上下に配置されています。
<FRAMESET ROWS="100, *">
<FRAME NAME=top SRC="banner.htm">
<FRAMESET COLS="20%, *">
<FRAME NAME=left SRC="contents.htm">
<FRAMESET ROWS="75%, *">
<FRAME NAME=main SRC="main.htm">
<FRAME NAME=bottom SRC="footer.htm">
</FRAMESET>
</FRAMESET>
</FRAMESET>
[注]上記の HTML の例を理解するには、例を空白のテキスト ドキュメントに貼り付け、ドキュメントの名前を "framespage.htm" に変更し、Word または Web ブラウザーでドキュメントを開きます。
Frameset オブジェクト
Frameset オブジェクトには、両方のタグの機能が含まれます。 各 Frameset オブジェクトは、それぞれ HTML タグ <FRAMESET と <FRAME> を表す wdFramesetTypeFrameset 型または wdFramesetTypeFrame> 型です。 "Frameset" で始まるプロパティは、wdFramesetTypeFrameset 型の Frameset オブジェクト (FramesetBorderColor および FramesetBorderWidth ) に適用されます。 "Frame" で始まるプロパティは、wdFramesetTypeFrame 型の Frameset オブジェクト (FrameDefaultURL、FrameDisplayBorders、FrameLinkToFile、FrameName、FrameResizable、および FrameScrollBarType) に適用されます。
Frameset オブジェクトの階層構造内の移動
フレーム ページは階層的な HTML タグのセットとして定義されるので、Frameset オブジェクトにアクセスするためのオブジェクト モデルも階層構造になっています。 ChildFramesetItem プロパティと ParentFrameset プロパティを使用して、Frameset オブジェクトの階層を走査します。 例えば、
MyFrameset.ChildFramesetItem(n)
は、n 番目の第 1 レベル <FRAMESET$gt; または $lt に対応する Frameset オブジェクトを返します。FRAME$gt;に対応する <FRAMESET$gt; タグと </FRAMESET$gt; タグの間のMyFrameset
タグ。
が最も外側の$gtに対応する Frameset オブジェクトの場合MyFrameset
。FRAMESET$gt;前の HTML 例のタグは、MyFrameset.ChildFramesetItem(1)
"top" という名前のフレームに対応する wdFramesetTypeFrame 型の Frameset オブジェクトを返します。同様に、 MyFrameset.ChildFramesetItem(2)
2 つの Frameset オブジェクトを含む wdFramesetTypeFrameset 型の Frameset オブジェクトを返します。最初のオブジェクトは "left" という名前のフレームに対応します。2 番目のオブジェクトは wdFramesetTypeFrameset 型です。
wdFramesetTypeFrame 型の Frameset オブジェクトには子フレームはなく、wdFramesetTypeFrameset 型のオブジェクトには少なくとも 1 つあります。
前の HTML の例で定義した 4 つのフレームの名前を表示する Visual Basic の例を次に示します。
Dim MyFrameset As Frameset
Dim Name1 As String
Dim Name2 As String
Dim Name3 As String
Dim Name4 As String
Set MyFrameset = ActiveWindow.Document.Frameset
With MyFrameset
Name1 = .ChildFramesetItem(1).FrameName
With .ChildFramesetItem(2)
Name2 = .ChildFramesetItem(1).FrameName
With .ChildFramesetItem(2)
Name3 = .ChildFramesetItem(1).FrameName
Name4 = .ChildFramesetItem(2).FrameName
End With
End With
End With
Debug.Print Name1, Name2, Name3, Name4
各フレームおよびフレーム ページ全体
フレーム ページ上の特定のフレームに関連付けられている Frameset オブジェクトを取得するには、Pane オブジェクトの Frameset プロパティを使用します。 例えば、
ActiveWindow.Panes(1).Frameset
このコードでは、フレーム ページの 1 番目のフレームに対応する Frameset オブジェクトが取得されます。
フレーム ページ自体は、個々のフレームのコンテンツを構成するドキュメントとは別のドキュメントです。 フレーム ページに関連付けられている Frameset オブジェクトは、対応する Document オブジェクトからアクセスされ、フレーム ページが表示される Window オブジェクトからアクセスされます。 例えば、
ActiveWindow.Document.Frameset
このコードでは、作業中のウィンドウで表示されているフレーム ページの Frameset オブジェクトが取得されます。
メモ フレーム ページを操作する場合、 ActiveDocument プロパティは、フレーム ページ全体ではなく、アクティブウィンドウ内のフレームに関連付けられた Document オブジェクトを返します。
フレーム ページおよびそのコンテンツの新規作成
次の使用例は、3 つのフレームを含む新しいフレーム ページを作成し、各フレームにテキストを追加し、フレームごとに背景色を設定します。 2 つのハイパーリンクが左フレームに挿入されます。最初のハイパーリンクはメイン フレームで One.htm というドキュメントを開き、2 つ目のハイパーリンクはウィンドウ全体で Two.htm というドキュメントを開きます。 これらのハイパーリンクを機能させるには、One.htmという名前のファイルを作成し、文字列を既存のファイルの名前にTwo.htmまたは変更する必要があります。
メモ 各フレームが作成されると、コンテンツが新しいフレームに読み込まれる新しいドキュメントが作成されます。 この例では、3 つのフレームのそれぞれに関連付けられているドキュメントを自動的に保存するフレーム ページを保存します。
Sub FramesetExample1()
' Create new frames page.
Documents.Add DocumentType:=wdNewFrameset
With ActiveWindow
' Add text and color to first frame.
Selection.TypeText Text:="BANNER FRAME"
With ActiveDocument.Background.Fill
.ForeColor.RGB = RGB(204, 153, 255)
.Visible = msoTrue
End With
' Add new frame below top frame.
.ActivePane.Frameset.AddNewFrame _
wdFramesetNewFrameBelow
' Add text and color to bottom frame.
.ActivePane.Frameset.FrameName = "main"
Selection.TypeText Text:="MAIN FRAME"
With ActiveDocument.Background.Fill
.ForeColor.RGB = RGB(0, 128, 128)
.Visible = msoTrue
End With
' Add new frame to left of bottom frame.
.ActivePane.Frameset.AddNewFrame _
wdFramesetNewFrameLeft
' Set the width to 25% of the window width.
With .ActivePane.Frameset
.WidthType = wdFramesetSizeTypePercent
.Width = 25
.FrameName = "left"
End With
' Add text and color to left frame.
Selection.TypeText Text:="LEFT FRAME"
With ActiveDocument.Background.Fill
.ForeColor.RGB = RGB(204, 255, 255)
.Visible = msoTrue
End With
Selection.TypeParagraph
Selection.TypeParagraph
' Add hyperlinks to left frame.
With ActiveDocument.Hyperlinks
.Add Anchor:=Selection.Range, _
Address:="one.htm", Target:="main"
Selection.TypeParagraph
Selection.TypeParagraph
.Add Anchor:=Selection.Range, _
Address:="two.htm", Target:="_top"
End With
' Activate top frame.
.Panes(1).Activate
' Set the height to 1 inch.
With .ActivePane.Frameset
.HeightType = wdFramesetSizeTypeFixed
.Height = InchesToPoints(1)
.FrameName = "top"
End With
' Save the frames page and its associated files.
.Document.SaveAs FileName:="default.htm", _
FileFormat:=wdFormatHTML
End With
End Sub
既存のファイルのコンテンツを表示するフレーム ページの作成
次の使用例は、上記のようなフレーム ページを作成しますが、各フレームの既定の URL を既存のドキュメントに設定して、そのドキュメントの内容がフレームに表示されるようにします。 この例を機能させるには、Main.htm、Left.htm、Banner.htmという名前のファイルを作成するか、例の文字列を既存のファイルの名前に変更する必要があります。
Sub FramesetExample2()
' Create new frames page.
Documents.Add DocumentType:=wdNewFrameset
With ActiveWindow
' Add new frame below top frame.
.ActivePane.Frameset.AddNewFrame _
wdFramesetNewFrameBelow
' Set the name and initial page for the frame.
With .ActivePane.Frameset
.FrameName = "main"
.FrameDefaultURL = "main.htm"
End With
' Add new frame to left of bottom frame.
.ActivePane.Frameset.AddNewFrame _
wdFramesetNewFrameLeft
With .ActivePane.Frameset
' Set the width to 25% of the window width.
.WidthType = wdFramesetSizeTypePercent
.Width = 25
' Set the name and initial page for the frame.
.FrameName = "left"
.FrameDefaultURL = "left.htm"
End With
' Activate top frame.
.Panes(1).Activate
With .ActivePane.Frameset
' Set the height to 1 inch.
.HeightType = wdFramesetSizeTypeFixed
.Height = InchesToPoints(1)
' Set the name and initial page for the frame.
.FrameName = "top"
.FrameDefaultURL = "banner.htm"
End With
' Save the frameset.
.Document.SaveAs FileName:="default.htm", _
FileFormat:=wdFormatHTML
End With
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。