Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Exportar a Excel uniendo dos Charts y eliminando una columna

Buenos días compañeros.

Estoy atorado en un requerimiento: El usuario debe exportar a Excel el siguiente formato:

20142013Presupuesto 2014
Ventas10,0008,00010,000
Compras3,0002,000

2,500

Dimensión Principal: Año  Expresiones: Ventas,Compras y Presupuesto.

Dimensiones Secundarias: Ventas y Compras Expresiones: Presupuesto.

Para mostrar visualmente al usuario estoy usando dos charts

Chart Ventas y Compras

20142013
Ventas10,0008,000
Compras3,0002,000

Chart Presupuesto de Ventas y Compras para el Año Max

Columna que debe ser eliminada al momento de mandar a excel2014
Presupuesto de Ventas8,000
Presupuesto de Compras2,000

Agregue un botón para unir ambos gráficos con una macro pero no sé como eliminar la primera columna del gráfico de presupuesto al momento de exportar a Excel.

Código Macro:

sub Excel

  set XLApp = CreateObject("Excel.Application")

  XLapp.Visible = true

  set XLDOC = XLApp.Workbooks.Add

  XLDoc.Sheets(1).name = "Export"

  set XLSheet = XLDoc.Worksheets(1)

  set myTable = ActiveDocument.GetSheetObject("CH11") 'ActiveDocument.GetSheetObject("CH11")

  set XLSheet = XLDoc.Worksheets(1)

  Mytable.CopyTableToClipboard true

  XLSheet.Paste XLSheet.Range("A1")

  XLSheet.Columns("A").ColumnWidth=40

  'Copio el segundo objecto

  set myTable2 = ActiveDocument.GetSheetObject("CH03")

' table.GetCell(RowIter,ColIter)

  Mytable2.CopyTableToClipboard true

  XLSheet.Paste XLSheet.Range("D1")

  XLSheet.Cells.Entirerow.AutoFit

  'xlSheet.Cells.

end sub

Este es un desafío para los expertos.

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Saludos colegas.

Al final tuve que implementar otra solución: No me permitieron instalar el ISS y el Tunneling para que los usuarios pudieran ejecutar el pluging del Iexplorer.

No pudiendo ejecutar Macros decidí cambiar el modelado de la base de datos.

Así quedo la estructura:

AnioMedidaMontoPresupuesto
2014Ventas10,00010,000
2014Compras3,0002,500
2013Ventas8,0000
2013Compras2,0000

Con esta estructura de BD se facilita las cosas al momento de montar la información.

Gracias pos su apoyo.

View solution in original post

3 Replies
soniacoprosa
Creator
Creator

Hola Elliott,

La forma que yo utilizo para no mostrar columnas en un objeto que quiero sacar por ejemplo en un informe es la siguiente: tengo un par de macros, una me habilita todas las columnas del objeto y otra me deshabilita las que no quiero que se impriman. El ej. que te pongo es una tabla pivotante con 32 columnas (expresiones).

Con un botón puedes añadirle las acciones que necesites, en mi caso 1º hago “Disable1”, después imprimo un informe y después vuelvo a hacer “Enable3”.

' Muestra todas las columnas para listado

Sub EnableA3

set doc = ActiveDocument

set s = doc.GetSheetObject("CH728")

set propS = s.getProperties()

'Esto lo que hace es habilitar la expresión (le pone la marca en el objeto)

' NOTA: las expresiones empiezan en la cero!!

exprD = propS.Expressions.Item(0).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(1).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(2).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(3).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(4).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(5).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(6).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(7).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(8).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(9).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(10).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(11).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(12).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(13).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(14).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(15).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(16).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(17).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(18).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(19).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(20).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(21).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(22).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(23).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(24).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(25).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(26).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(27).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(28).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(29).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(30).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(31).Item(0).Data.ExpressionData '

exprD.Enable = true

s.setProperties propS

end sub

' Ocultar columnas para listado

Sub Disable1

set doc = ActiveDocument

set s = doc.GetSheetObject("CH728")

set propS = s.getProperties()

'Esto lo que hace es habilitar la expresión (le pone la marca en el objeto)

' NOTA: las expresiones empiezan en la cero!!

exprD = propS.Expressions.Item(0).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(1).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(2).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(3).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(4).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(5).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(6).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(7).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(8).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(9).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(10).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(11).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(12).Item(0).Data.ExpressionData

exprD.Enable = true

'Esto lo que hace es deshabilitar la expresión (le pone la marca en el objeto)

exprD = propS.Expressions.Item(13).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(14).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(15).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(16).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(17).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(18).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(19).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(20).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(21).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(22).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(23).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(24).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(25).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(26).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(27).Item(0).Data.ExpressionData

exprD.Enable = false

exprD = propS.Expressions.Item(28).Item(0).Data.ExpressionData '

exprD.Enable = false

exprD = propS.Expressions.Item(29).Item(0).Data.ExpressionData

exprD.Enable = true

exprD = propS.Expressions.Item(30).Item(0).Data.ExpressionData '

exprD.Enable = true

exprD = propS.Expressions.Item(31).Item(0).Data.ExpressionData '

exprD.Enable = true

s.setProperties propS

end sub

Un saludo,

etendero
Partner - Creator
Partner - Creator

Hola Elliott,

¿Por qué no te creas un objeto de tabla oculto en tu documento, o en una hoja oculta con los objetos para exportar, con la composición de las 4 columnas que necesitas exportar?

Tu macro quedaría algo como lo siguiente:

sub Excel

  set XLApp = CreateObject("Excel.Application")

  XLapp.Visible = true

  set XLDOC = XLApp.Workbooks.Add

  XLDoc.Sheets(1).name = "Export"

  set XLSheet = XLDoc.Worksheets(1)

  set myTable = ActiveDocument.GetSheetObject("CHXX") 'ActiveDocument.GetSheetObject("CH11")

  Mytable.CopyTableToClipboard true

  XLSheet.Paste XLSheet.Range("A1")

  XLSheet.Cells.Entirerow.AutoFit

  'xlSheet.Cells.

end sub

No lo he probado, por lo que no te garantizo el resultado. Si quieres, puedes subir el documento para montarte un ejemplo.

Un saludo y espero haberte sido de ayuda.

Anonymous
Not applicable
Author

Saludos colegas.

Al final tuve que implementar otra solución: No me permitieron instalar el ISS y el Tunneling para que los usuarios pudieran ejecutar el pluging del Iexplorer.

No pudiendo ejecutar Macros decidí cambiar el modelado de la base de datos.

Así quedo la estructura:

AnioMedidaMontoPresupuesto
2014Ventas10,00010,000
2014Compras3,0002,500
2013Ventas8,0000
2013Compras2,0000

Con esta estructura de BD se facilita las cosas al momento de montar la información.

Gracias pos su apoyo.