Tema Cerrado
Resultados 1 al 6 de 6

Tema: [SOLUCIONADO] Crear gráfico con distinto tamaño al momento de crearlo con una macro

  1. #1 Arriba
    Usuario registrado
    Me Conecto Desde
    Users Country Flag Natanael va por un camino distinguido
    Fecha de Ingreso
    02/2009
    Versión Excel
    Excel 2003
    Mensajes
    9
    Gracias
    2
    Agradecido 0 veces en 0 posts

    Question [SOLUCIONADO] Crear gráfico con distinto tamaño al momento de crearlo con una macro

    Hola a todos los foreros de AyudaExcel, nuevamente les traigo una dificultad que se me presento al realizar una macros, pero es un detalle, el problema es que no conozco como solucionarlo.

    Este consiste en lo siguiente, estoy tratando de hacer un grafico en el que se realicen todas las modificaciones al momento de crearlo, no despues. Y lamentablemente no se donde ubicar la modificacion del tamaño del grafico en el codigo que llevo hasta ahora, ya que al correrlo en office 2003 no me lanza errores, pero si lo hace en el momento de correrlo en office 2007, por eso quiero hacer un grafico con todas las modificaciones al momento de crearse, para que asi funcione bien independientemente del office que se este utilizando.

    Este es el codigo del grafico hasta ahora (Aqui añadi cosas a un codigo que me dio mjrofra):

    Código:
     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ''ESTE ES EL CODIGO QUE CREA EL GRAFICO CON TODAS SUS'''
        '' MODIFICACIONES EN EL MOMENTO DE CREARLO.          '''
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        With ActiveSheet.ChartObjects.Add(Left:=350, Width:=375, Top:=160, Height:=225)
            .Name = nombre
            .Border.Weight = 2
            .Border.LineStyle = -1
            .RoundedCorners = True
            With .Chart
                .SetSourceData Source:=Sheets("Hoja1").Range("A1:B10")
                .ChartType = xl3DPie
                .Legend.Font.Size = 8
                .HasTitle = True
                .ChartTitle.Characters.Text = "Titulo Gráfico"
                .ChartTitle.Font.Size = 12
                .ChartTitle.Font.FontStyle = "Negrita"
                With .ChartArea
                    .AutoScaleFont = False
                    .Shadow = True
                End With
                With .PlotArea.Border
                    .Weight = xlThin
                    .LineStyle = xlNone
                End With
                With .PlotArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
                With .ChartArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
            End With
        End With
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ''ESTE ES EL CODIGO QUE CREA EL GRAFICO CON TODAS SUS'''
        '' MODIFICACIONES EN EL MOMENTO DE CREARLO.          '''
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
        
        '''''''''''''''''''''''''''''''''''''
        ''SE CAPTURA EL NOMBRE DEL GRAFICO'''
        '''''''''''''''''''''''''''''''''''''
        
        numgraf = ActiveSheet.ChartObjects.Count
        If numgraf > 1 Then
            For i = 1 To numgraf
                nomgraf = ActiveSheet.ChartObjects(i).Name
            Next i
        End If
        If numgraf = 1 Then
            nomgraf = ActiveSheet.ChartObjects(numgraf).Name
        End If
        
        '''''''''''''''''''''''''''''''''''''
        ''SE CAPTURA EL NOMBRE DEL GRAFICO'''
        '''''''''''''''''''''''''''''''''''''
    Siendo el siguiente codigo el que quiero añadir y no se como:

    Código:
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ''ESTE ES EL CODIGO QUE NO SE COMO AGREGAR AL DE MAS ARRIBA'''
        ''Y CON EL QUE TENGO PROBLEMAS.                            '''
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ActiveSheet.ChartObjects(nomgraf).Activate
        ActiveSheet.Shapes(nomgraf).ScaleWidth 1.18, msoFalse, _
            msoScaleFromTopLeft
        ActiveSheet.Shapes(nomgraf).ScaleHeight 1.28, msoFalse, _
            msoScaleFromTopLeft
            
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        ''ESTE ES EL CODIGO QUE NO SE COMO AGREGAR AL DE MAS ARRIBA'''
        ''Y CON EL QUE TENGO PROBLEMAS.                            '''
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Ojala me haya explicado bien, muchas gracias de antemano.

    PD: Aprovecho de adjuntar un archivo de ejemplo para que lo revisen.
    Archivos Adjuntados
    Última edición por Natanael; 16-03-2010 a las 01:55
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

  2. #2 Arriba
    Super Moderador
    Me Conecto Desde
    Users Country Flag mjrofra va por un camino distinguido Avatar de mjrofra
    Fecha de Ingreso
    05/2009
    Versión Excel
    Excel 2002
    Mensajes
    2,330
    Gracias
    18
    Agradecido 209 veces en 188 posts

    Predeterminado Re: ¿Cómo crear un gráfico con distinto tamaño al momento de crearlo con una macro?

    Hola Natanael,

    en el código no necesitas capturar el nombre del gráfico pues lo puedes asignar de entrada.

    Esto me funcionó bien en Excel 2007:

    Código:
    Sub Crea_Grafico()
        
        'Variable que va a albergar el nombre del gráfico
        Dim Nombre As String
        
        'Se crea el nombre del gráfico como "Graf" y un número consecutivo
        'de acuerdo con los gráficos ya existentes en la hoja
        Nombre = "Graf" & Sheets("Hoja1").ChartObjects.Count
        
        With ActiveSheet.ChartObjects.Add(Left:=350, Width:=375, Top:=160, Height:=225)
            .Name = Nombre
            .Border.Weight = 2
            .Border.LineStyle = -1
            .RoundedCorners = True
            With .Chart
                .SetSourceData Source:=Sheets("Hoja1").Range("A1:B10")
                .ChartType = xl3DPie
                .Legend.Font.Size = 8
                .HasTitle = True
                .ChartTitle.Characters.Text = "Titulo Gráfico"
                .ChartTitle.Font.Size = 12
                .ChartTitle.Font.FontStyle = "Negrita"
                With .ChartArea
                    .AutoScaleFont = False
                    .Shadow = True
                End With
                With .PlotArea.Border
                    .Weight = xlThin
                    .LineStyle = xlNone
                End With
                With .PlotArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
                With .ChartArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
            End With
        End With
        
        With ActiveSheet.Shapes(Nombre)
            .ScaleWidth 1.18, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 1.28, msoFalse, msoScaleFromTopLeft
        End With
    
    End Sub
    Mauricio
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

  3. #3 Arriba
    Super Moderador
    Me Conecto Desde
    Users Country Flag mjrofra va por un camino distinguido Avatar de mjrofra
    Fecha de Ingreso
    05/2009
    Versión Excel
    Excel 2002
    Mensajes
    2,330
    Gracias
    18
    Agradecido 209 veces en 188 posts

    Predeterminado Re: ¿Cómo crear un gráfico con distinto tamaño al momento de crearlo con una macro?

    y me quedé pensando y en realidad lo puedes hacer todo dentro de la misma estructura with que trabaja con el gráfico generado, algo así (de nuevo, lo he probado en Excel 2007, no sé si funcione correctamente en versiones anteriores):

    Código:
    Sub Crea_Grafico()
        
        With ActiveSheet.ChartObjects.Add(Left:=350, Width:=375, Top:=160, Height:=225)
            .Border.Weight = 2
            .Border.LineStyle = -1
            .RoundedCorners = True
            With .Chart
                .SetSourceData Source:=Sheets("Hoja1").Range("A1:B10")
                .ChartType = xl3DPie
                .Legend.Font.Size = 8
                .HasTitle = True
                .ChartTitle.Characters.Text = "Titulo Gráfico"
                .ChartTitle.Font.Size = 12
                .ChartTitle.Font.FontStyle = "Negrita"
                With .ChartArea
                    .AutoScaleFont = False
                    .Shadow = True
                End With
                With .PlotArea.Border
                    .Weight = xlThin
                    .LineStyle = xlNone
                End With
                With .PlotArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
                With .ChartArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
            End With
            With .ShapeRange
                .ScaleWidth 1.18, msoFalse, msoScaleFromTopLeft
                .ScaleHeight 1.28, msoFalse, msoScaleFromTopLeft
            End With
        End With
    
    End Sub
    Mauricio
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

  4. #4 Arriba
    Super Moderador
    Me Conecto Desde
    Users Country Flag mjrofra va por un camino distinguido Avatar de mjrofra
    Fecha de Ingreso
    05/2009
    Versión Excel
    Excel 2002
    Mensajes
    2,330
    Gracias
    18
    Agradecido 209 veces en 188 posts

    Predeterminado Re: ¿Cómo crear un gráfico con distinto tamaño al momento de crearlo con una macro?

    y de nuevo me quedé pensando , y el tamaño del gráfico lo estás dando cuando lo creas, basta con modificar allí la altura (height) y el ancho (width) y no necesitarás luego modificarlo:

    Código:
    Sub Crea_Grafico()
        
        With ActiveSheet.ChartObjects.Add(Left:=350, Width:=442.5, Top:=160, Height:=285.5)
            .Border.Weight = 2
            .Border.LineStyle = -1
            .RoundedCorners = True
            With .Chart
                .SetSourceData Source:=Sheets("Hoja1").Range("A1:B10")
                .ChartType = xl3DPie
                .Legend.Font.Size = 8
                .HasTitle = True
                .ChartTitle.Characters.Text = "Titulo Gráfico"
                .ChartTitle.Font.Size = 12
                .ChartTitle.Font.FontStyle = "Negrita"
                With .ChartArea
                    .AutoScaleFont = False
                    .Shadow = True
                End With
                With .PlotArea.Border
                    .Weight = xlThin
                    .LineStyle = xlNone
                End With
                With .PlotArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
                With .ChartArea.Fill
                    .TwoColorGradient Style:=msoGradientDiagonalUp, Variant:=2
                    .Visible = True
                    .ForeColor.SchemeColor = 8
                    .BackColor.SchemeColor = 2
                End With
            End With
        End With
    
    End Sub
    Mauricio
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

  5. #5 Arriba
    Usuario registrado
    Me Conecto Desde
    Users Country Flag ST_ va por un camino distinguido Avatar de ST_
    Fecha de Ingreso
    09/2008
    Versión Excel
    Excel 2003
    Mensajes
    1,238
    Gracias
    1
    Agradecido 44 veces en 37 posts

    Predeterminado Re: ¿Cómo crear un gráfico con distinto tamaño al momento de crearlo con una macro?

    Cita Iniciado por mjrofra Ver Mensaje
    y de nuevo me quedé pensando , y......
    .. sucede con mucha frecuencia a mas de 1
    Salu2 ST

    No se puede aprender nada mejor que experiméntandolo uno mismo (Albert Einstein)
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

  6. #6 Arriba
    Usuario registrado
    Me Conecto Desde
    Users Country Flag Natanael va por un camino distinguido
    Fecha de Ingreso
    02/2009
    Versión Excel
    Excel 2003
    Mensajes
    9
    Gracias
    2
    Agradecido 0 veces en 0 posts

    Predeterminado Re: ¿Cómo crear un gráfico con distinto tamaño al momento de crearlo con una macro?

    Hola disculpa la demora, muchas gracias por tu respuesta, me ha servido de mucho!!! Ahora aprovechare de probar tambien lo del nombre que me pusiste.

    Muchas gracias n_n!!!
    Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!

Tema Cerrado

Temas Similares

  1. Error 1004 en una macro que funcionaba en su momento
    Por huma2000 en el foro Macros y programación VBA
    Respuestas: 4
    Último Mensaje: 28-09-2009, 05:27
  2. Crear grafico desde macro en otra hoja
    Por jvaldenegro en el foro Macros y programación VBA
    Respuestas: 0
    Último Mensaje: 04-08-2009, 20:19
  3. Respuestas: 4
    Último Mensaje: 04-06-2009, 22:11
  4. Macro que crea tabla dinamica de rango variable y distinto nombre de hoja
    Por stoploco en el foro Macros y programación VBA
    Respuestas: 2
    Último Mensaje: 30-01-2009, 21:44
  5. tamaño máximo de macro
    Por jordi120 en el foro Macros y programación VBA
    Respuestas: 8
    Último Mensaje: 12-12-2008, 04:14

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes