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 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.