フレーム ページを作成する

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 オブジェクト (FrameDefaultURLFrameDisplayBordersFrameLinkToFileFrameNameFrameResizableおよび 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 のサポートおよびフィードバックを参照してください。