Поделиться через


Создание страниц кадров

В Word можно использовать фреймы в структуре веб-страницы, чтобы упорядочить информацию и упростить доступ к ней. Страница кадров, также называемая набором кадров, — это веб-страница, разделенная на два или более разделов, каждый из которых указывает на другую веб-страницу. Фрейм на странице кадров также может указывать на другую страницу кадров. Сведения о создании кадров и страниц фреймов в пользовательском интерфейсе Word см. в справке Word.

Кадры и страницы кадров создаются с помощью ряда html-тегов. Объектную модель Visual Basic для работы с фреймами и страницами кадров лучше всего понять, изучив их HTML-теги.

Страницы фреймов в HTML

В HTML страницы кадров и содержащиеся в них кадры создаются с помощью иерархического набора тегов <FRAMESET> и <FRAME> . Набор кадров может содержать как кадры, так и другие наборы кадров. Например, следующий HTML-код создает набор кадров с фреймом поверх и набором кадров непосредственно под ним. Этот набор кадров содержит фрейм слева и набор кадров справа. Этот набор кадров содержит два кадра, один над другим.

<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 или в веб-браузере.

Объект набора кадров

Объект Frameset включает в себя функциональные возможности обоих тегов. Каждый объект Frameset имеет тип wdFramesetTypeFrameset или wdFramesetTypeFrameFrame, которые представляют html-теги <FRAMESET> и <FRAME> соответственно. Свойства, начинающиеся с "Frameset", применяются к объектам набора кадров типа wdFramesetTypeFrameset (FramesetBorderColor и FramesetBorderWidth . Свойства, начинающиеся с "Frame", применяются к объектам набора кадров типа wdFramesetTypeFrame (FrameDefaultURL, FrameDisplayBorders, FrameLinkToFile, FrameName, FrameResizable и FrameScrollBarType).

Обход иерархии объектов набора кадров

Так как страницы кадров определяются как иерархический набор тегов HTML, объектная модель для доступа к объектам набора кадров также является иерархической. Используйте свойства ChildFramesetItem и ParentFrameset для обхода иерархии объектов Frameset . Пример.

MyFrameset.ChildFramesetItem(n)

возвращает объект Frameset, соответствующий n первому уровню <FRAMESET$gt; или $lt; FRAME$gt; тег между тегами <FRAMESET$gt; и </FRAMESET$gt; тегами, соответствующими .MyFrameset

Если MyFrameset является объектом frameset , соответствующим самому внешнему $gt; FRAMESET$gt; в предыдущем примере MyFrameset.ChildFramesetItem(1) HTML возвращает объект Frameset типа wdFramesetTypeFrame , соответствующий фрейму с именем top. Аналогичным MyFrameset.ChildFramesetItem(2) образом возвращает объект Frameset типа wdFramesetTypeFrameset, сам содержащий два объекта Frameset : первый объект соответствует кадру с именем "left", второй относится к типу wdFramesetTypeFrameset.

Объекты набора кадров типа wdFramesetTypeFrame не имеют дочерних кадров, а объекты wdFramesetTypeFrameset имеют по крайней мере один из них.

В следующем примере Visual Basic отображаются имена четырех кадров, определенных в предыдущем примере HTML.

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 , связанный с определенным кадром на странице кадров, используйте свойство Frameset объекта Pane . Пример.

ActiveWindow.Panes(1).Frameset

возвращает объект Frameset , соответствующий первому кадру страницы кадров.

Страница кадров сама по себе является документом, отделенным от документов, составляющих содержимое отдельных кадров. Доступ к объекту Frameset , связанному со страницей кадров, осуществляется из соответствующего объекта Document , доступ к которому, в свою очередь, осуществляется из объекта Window , в котором отображается страница кадров. Пример.

ActiveWindow.Document.Frameset

возвращает объект Frameset для страницы кадров в активном окне.

Примечание При работе со страницами кадров свойство ActiveDocument возвращает объект Document , связанный с кадром в активной области, а не всей страницей кадров.

Создание страницы кадров и ее содержимого с нуля

В этом примере создается новая страница кадров с тремя кадрами, добавляется текст к каждому кадру и устанавливается цвет фона для каждого кадра. Она вставляет две гиперссылки в левый кадр: первая гиперссылка открывает документ с именем One.htm в главном кадре, а вторая — документ с именем Two.htm во всем окне. Чтобы эти гиперссылки работали, необходимо создать файлы с именем One.htm и Two.htm или изменить строки на имена существующих файлов.

Примечание При создании каждого кадра Word создает новый документ, содержимое которого будет загружено в новый кадр. В примере сохраняется страница кадров, на которой автоматически сохраняются документы, связанные с каждым из трех кадров.

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 и обратная связь.