VBA: Patrón de diapositivas asignar estilos de Word de PowerPoint

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

168768
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
Para conseguir un aspecto coherente para los documentos creados en Microsoft Office, es posible utilizar información de formato desde un programa de Office en otro programa de Office. La sección "Más información" de este artículo proporciona un ejemplo de Microsoft Visual Basic para aplicaciones macro (procedimiento Sub) que recupera los estilos de título desde Microsoft Word y les aplica al patrón de diapositivas en Microsoft PowerPoint.
Más información
Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.

Qué hace la macro

La siguiente información de estilo se recupera desde Microsoft Word:
  • nombre de fuente
  • Negrita
  • Sombra
  • Subrayado
  • Cursiva
Se omite el otro formato, pero puede modificar esta macro para aplicar información de formato adicional si es necesario.

En la tabla siguiente se muestra cómo se asignan los estilos de Word al patrón de diapositivas en PowerPoint.

Word PowerPoint
Heading 1   Title of slide master (title placeholder)
Heading 2   First level indent (in the body placeholder)
Heading 3   Second level indent (in the body placeholder)
Heading 4   Third level indent (in the body placeholder)
Heading 5   Fourth level indent (in the body placeholder)
Heading 6   Fifth level indent (in the body placeholder)

Preparando para ejecutar la macro

Esta macro contiene código que coloque en un módulo y un módulo de clase. Coloque el procedimiento denominado "Main" en un módulo; colocar el resto del código en un módulo de clase denominado "WordObject." Para preparar esta macro para ejecutar, utilice los pasos siguientes:
  1. Inicie el Editor de Visual Basic:
    1. Inicie PowerPoint 97 y abra o cree una presentación.
    2. En el menú Herramientas , elija macro y haga clic en Editor de Visual Basic .
  2. Para insertar un módulo en un proyecto, haga clic en módulo en el menú Insertar .
  3. En el módulo que acaba de crear, escriba el código que comienza con:
    Sub Main()						
    y termina con:
    ' End of Main.End Sub						
  4. Para insertar un módulo de clase en el proyecto, haga clic en Módulo de clase en el menú Insertar .
  5. Cambie el nombre del módulo de clase a WordObject:
    1. En el Explorador de proyectos, abra la carpeta módulos de clase.

      Nota: Si el Explorador de proyectos está cerrado, haga clic en Explorador de proyectos en el menú Ver para abrirlo.
    2. Haga clic en el módulo de Class1 . Class1 es el nombre de predeterminado dado al crear un módulo de clase. Si crear otro nuevo módulo, se Class2 con nombre y, a continuación, Class3 y así sucesivamente.
    3. Vea la hoja de propiedades para el módulo de Class1. Si se cierra la ventana Propiedades, haga clic en Ventana Propiedades en el menú Ver .
    4. Resalte Class1 a la derecha de (nombre). Cambie el nombre a WordObject. (Utilice el mismo caso).
  6. En el módulo de clase que acaba de crear, escriba el código que comienza con:
    ' Start of WordObject class.						
    y termina con:
    ' End of WordObject class.						
  7. Agregue una referencia al modelo de objetos de Word:
    1. En el menú Herramientas (en el Editor de Visual Basic), haga clic en referencias .
    2. En la casilla de verificación "biblioteca de objetos de Microsoft Word 8.0" .
    3. Haga clic en Aceptar .
  8. Ejecutar la macro en PowerPoint:
    1. En el menú Herramientas , elija macro y, a continuación, haga clic en macros .
    2. Seleccione la macro denominada principal y haga clic en Ejecutar .

El código de macro

Sub Main()   Const strMacroName = "Get Word Styles"   Dim oWord As New WordObject   Dim lResult As Long   With oWord      ' Check if a document is open in Word.      If .IsDocOpen = False Then         ' Prompt the user to open a document if no document is open.         lResult = MsgBox("No document is open in Word. Would you " _            & "like to open a document?", vbOKCancel + vbExclamation, _            strMacroName)         ' Check if the user clicked OK.         If lResult = vbOK Then            .OpenDocPrompt         Else            ' The user clicked Cancel. Free resources, and end the macro            .FreeWord            End         End If      End If      ' Get the Heading 1 styles and apply them to the slide master      ' title.      .GetStyles 1   End With   ' Apply the Heading 1 styles to title in the slide master.   With ActivePresentation.SlideMaster.Shapes.Title.TextFrame.TextRange      .Font.Name = oWord.Fontname      .Font.Bold = oWord.Bold      .Font.Shadow = oWord.Shadow      .Font.Underline = oWord.Underline      .Font.Italic = oWord.Italic   End With   ' Loop through and apply all the Word heading styles to the body   ' placeholder.   Dim x As Long   For x = 2 To 6      ' Getting Heading 2 styles      oWord.GetStyles x      ' Apply heading to styles (retrieved from Word) to the first line      ' in the placeholder.      With ActivePresentation.SlideMaster.Shapes.Placeholders(ppPlaceholderBody).TextFrame         .TextRange.Lines(x - 1).Font.Name = oWord.Fontname         .TextRange.Lines(x - 1).Font.Bold = oWord.Bold         .TextRange.Lines(x - 1).Font.Shadow = oWord.Shadow         .TextRange.Lines(x - 1).Font.Underline = oWord.Underline         .TextRange.Lines(x - 1).Font.Italic = oWord.Italic      End With   Next x   ' Check if Word was started by the macro.   If oWord.WasStarted = False Then      MsgBox "Successfully imported heading styles from Word." _         , vbInformation, strMacroName   End If' End of Main.End Sub				
código de clase WordObject:
' Start of WordObject class.Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _   (ByVal lpClassName As String, _   ByVal lpWindowName As Long) As LongPrivate Declare Function MessageBox Lib "user32" Alias "MessageBoxA" _   (ByVal hwnd As Long, _   ByVal lpText As String, _   ByVal lpCaption As String, _   ByVal wType As Long) As LongPrivate Const MB_YESNO = &H4&Private Const MB_QUESTION = &H20&Private Const IDYES = 6' Add all private variables here.' This member holds an object reference to Word. If an object reference' was not set, this value will be set to Nothing.Private m_oWordRef As Object' This variable is set to FALSE if GetObject was used to obtain' an object reference or if a Word reference could not be obtained.' This variable is set to TRUE if CreateObject was used to obtain' an object reference.Private m_bStarted As Boolean' This holds the font name for a heading style.Private m_strFontName As String' This holds the bold information for a font.Private m_lBold As Long' This holds the italic information.Private m_lItalic As Long' This holds the underline information.Private m_lUnderline As Long' This holds the shadow information.Private m_lShadow As LongPrivate Sub Class_Initialize()   ' This function initializes all members of the class to   ' their default values.   InitMembers   ' Used to trap GetObject if it fails.   On Error Resume Next   Err.Clear   ' Attempt to get a reference to the Word object.   Set m_oWordRef = GetObject(, "Word.Application.8")   ' Check if error occurred during GetObject.   If Err.Number <> 0 Then      ' Clear the error object.      Err.Clear       ' Attempt to get a reference to the Word object.      Set m_oWordRef = CreateObject("Word.Application.8")      ' Check if error occurred when calling CreateObject.      If Err.Number <> 0 Then         Set m_oWordRef = Nothing         m_bStarted = False      Else         ' CreateObject obtained a Word object reference.         m_bStarted = True      End If   End IfEnd SubPrivate Sub Class_Terminate()   Dim lResult As Long   Dim hwnd As Long   ' Check if Word was started by the macro.   ' If Word was started by the macro, quit Word, and   ' set the Word object reference to Nothing.   If m_bStarted = True Then      ' Get a handle to the main window of Word.      hwnd = FindWindow("OpusApp", 0&)      Dim strCaption As String      strCaption = "Word was started by this macro. Would you " _         & "like to close Word?"      ' Ask the user if they would like to close Word.      lResult = MessageBox(hwnd, strCaption, "Get Word Styles", _         MB_YESNO + MB_QUESTION)      ' Check if the user clicked Yes.      If lResult = IDYES Then         ' Quit Microsoft Word.         m_oWordRef.Quit      End If   End If   ' No matter what, set the Word object reference to   ' Nothing.   Set m_oWordRef = NothingEnd Sub' This subroutine initializes all member variables in' the class.Private Sub InitMembers()   Set m_oWordRef = Nothing   m_bStarted = False   ' This initializes all members that relate to styles.   InitHeadingMembersEnd SubPrivate Sub InitHeadingMembers()   ' Initializes the members related to the heading style.   m_strFontName = ""   m_lBold = -1   m_lItalic = -1   m_lUnderline = -1   m_lShadow = -1End Sub' Call this member to trigger the class construction.Public Sub Create()End SubPublic Function IsDocOpen() As Boolean   ' Check if any documents are open in Word.   ' The macro grabs the styles from the active   ' document, so a document must be open.   If m_oWordRef.Documents.Count = 0 Then      IsDocOpen = False   Else      IsDocOpen = True   End IfEnd FunctionPublic Sub OpenDocPrompt()   Dim lAnswer As Long   ' Check if Word is visible.   If m_oWordRef.Visible = False Then      m_oWordRef.Visible = True   End If   ' Give focus to Word.   m_oWordRef.Activate   ' Display the Open dialog box in Word.   lAnswer = m_oWordRef.Dialogs(wdDialogFileOpen).Show   ' If they click Cancel, close the macro.   If lAnswer <> -1 Then      Class_Terminate      End   End IfEnd SubPublic Sub FreeWord()   Class_TerminateEnd SubPublic Sub GetStyles(lStyleNumber As Long)   Dim lStyle As Long   ' Determine which heading to obtain.   Select Case lStyleNumber      ' Heading 1      Case 1         lStyle = wdStyleHeading1      ' Heading 2      Case 2         lStyle = wdStyleHeading2      ' Heading 3      Case 3         lStyle = wdStyleHeading3      ' Heading 4      Case 4         lStyle = wdStyleHeading4      ' Heading 5      Case 5         lStyle = wdStyleHeading5      ' Heading 6      Case 6         lStyle = wdStyleHeading5      Case Else         lStyle = wdStyleHeading1   End Select   ' Populate the style variables.   With m_oWordRef.ActiveDocument.Styles(lStyle).Font      m_strFontName = .Name      m_lBold = .Bold      m_lShadow = .Shadow      m_lItalic = .Italic      m_lUnderline = .Underline   End WithEnd Sub' Returns the m_strFontName member valuePublic Property Get Fontname() As String   Fontname = m_strFontNameEnd Property' Returns the m_lBold member value.Public Property Get Bold() As Long   Bold = m_lBoldEnd Property' Returns the m_lShadow member value.Public Property Get Shadow() As Long   Shadow = m_lShadowEnd Property' Returns the m_lItalic member value.Public Property Get Italic() As Long   Italic = m_lItalicEnd Property' Returns the m_lUnderline member value.Public Property Get Underline() As Long   Underline = m_lUnderlineEnd Property' Returns whether Word was started by the macro or not.Public Property Get WasStarted() As Boolean   WasStarted = m_bStartedEnd Property' End of WordObject class.				
Referencias
Para obtener información adicional acerca de cómo utilizar el código de ejemplo de este artículo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
173707OFF97: Cómo ejecutar código de ejemplo de artículos de Knowledge Base
ppt8 8.00 ppt97 vba vbe vb

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 168768 - Última revisión: 02/01/2014 17:12:11 - Revisión: 2.2

  • Microsoft PowerPoint 97 Standard Edition
  • kbnosurvey kbarchive kbmt kbcode kbdtacode kbhowto kbinterop kbprogramming KB168768 KbMtes
Comentarios