Crear páginas de marcos
En Word, puede usar marcos en el diseño de la página web para organizar y facilitar el acceso a la información. Una página de marcos, denominada también conjunto de marcos, es una página Web dividida en dos o más secciones, cada una de las cuales indica otra página Web. Un marco de una página de marcos también puede indicar otra página de marcos. Para obtener información sobre cómo crear marcos y páginas de marcos en la interfaz de usuario de Word, vea Ayuda de Word.
Los marcos y las páginas de marcos se crean con una serie de etiquetas HTML. El modelo de objetos de Visual Basic para trabajar con marcos y páginas de marcos se comprende mejor examinando sus etiquetas HTML.
Páginas de marcos en HTML
In HTML, frames pages and the frames they contain are built using a hierarchical set of <FRAMESET> and <FRAME> tags. A frameset can contain both frames and other framesets. For example, the following HTML creates a frameset with a frame on top and a frameset immediately below it. That frameset contains a frame on the left and a frameset on the right. That frameset contains two frames, one on top of the other.
<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>
[NOTA] Para comprender mejor el ejemplo HTML anterior, pegue el ejemplo en un documento de texto en blanco, cambie el nombre del documento "framespage.htm" y abra el documento en Word o en un explorador web.
Objeto Frameset
El objeto Frameset incluye la funcionalidad de las dos etiquetas. Cada objeto Frameset es de tipo wdFramesetTypeFrameset o wdFramesetTypeFrame, que representan las etiquetas <HTML FRAMESET> y <FRAME> respectivamente. Las propiedades que comienzan por "Frameset" se aplican a los objetos Frameset de tipo wdFramesetTypeFrameset (FramesetBorderColor y FramesetBorderWidth . Las propiedades que comienzan por "Frame" se aplican a objetos Frameset de tipo wdFramesetTypeFrame (FrameDefaultURL, FrameDisplayBorders, FrameLinkToFile, FrameName, FrameResizable y FrameScrollBarType).
Atravesar la jerarquía de objetos Frameset
Debido a que las páginas de marcos se definen como un conjunto jerárquico de etiquetas HTML, el modelo de objetos para el acceso a objetos Frameset es también jerárquico. Utilice las propiedades ChildFramesetItem y ParentFrameset para atravesar la jerarquía de objetos Frameset. Por ejemplo,
MyFrameset.ChildFramesetItem(n)
devuelve un objeto Frameset correspondiente al nº primer nivel <FRAMESET$gt; o $lt; FRAME$gt; etiqueta entre las <etiquetas FRAMESET$gt; y </FRAMESET$gt; correspondientes a MyFrameset
.
Si MyFrameset
es un objeto Frameset correspondiente a la $gt más externa; FRAMESET$gt; etiquetas en el ejemplo HTML anterior, MyFrameset.ChildFramesetItem(1)
devuelve un objeto Frameset de tipo wdFramesetTypeFrame que corresponde al marco denominado "top". De forma similar, MyFrameset.ChildFramesetItem(2)
devuelve un objeto Frameset de tipo wdFramesetTypeFrameset, que contiene dos objetos Frameset : el primer objeto corresponde al marco denominado "left", el segundo es de tipo wdFramesetTypeFrameset.
Los objetos Frameset de tipo wdFramesetTypeFrame no tienen marcos subordinados, mientras que los objetos de tipo wdFramesetTypeFrameset tienen al menos uno.
El siguiente ejemplo de Visual Basic muestra los nombres de los cuatro marcos definidos en el ejemplo HTML anterior.
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
Marcos individuales y página de marcos entera
To return the Frameset object associated with a particular frame on a frames page, use the Frameset property of a Pane object. For example,
ActiveWindow.Panes(1).Frameset
devuelve el objeto Frameset correspondiente al primer marco de la página de marcos.
The frames page is itself a document separate from the documents that make up the content of the individual frames. The Frameset object associated with a frames page is accessed from its corresponding Document object, which in turn is accessed from the Window object in which the frames page appears. For example,
ActiveWindow.Document.Frameset
devuelve el objeto Frameset correspondiente a la página de marcos de la ventana activa.
Nota Al trabajar con páginas de marcos, la propiedad ActiveDocument devuelve el objeto Document asociado al marco en el panel activo, no toda la página de marcos.
Crear una página de marcos y su contenido desde cero
En este ejemplo, se crea una nueva página de marcos con tres marcos, se agrega texto a cada marco y se establece el color de fondo para cada marco. Se insertan dos hipervínculos en el marco Left: el primero abre un documento denominado One.htm en el marco Main y el segundo abre un documento denominado Two.htm en toda la ventana. Para que estos hipervínculos funcionen, debe crear archivos con los nombres One.htm y Two.htm o cambiar las cadenas por los nombres de archivos existentes.
Nota A medida que se crea cada fotograma, Word crea un nuevo documento cuyo contenido se cargará en el nuevo marco. En el ejemplo se guarda la página de marcos que, a su vez, guarda automáticamente los documentos asociados con cada uno de los tres marcos.
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
Crear una página de marcos que muestre el contenido de archivos existentes
En este ejemplo, se crea una página de marcos similar a la anterior, pero se establece la dirección de un documento existente como dirección URL predeterminada de forma que el contenido de dicho documento se muestre en el marco. Para que este ejemplo funcione, debe crear archivos con los nombres Main.htm, Left.htm y Banner.htm o cambiar las cadenas en el ejemplo por los nombres de archivos existentes.
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
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de