Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В 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 и обратная связь.