Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenos días compañeros.
Estoy atorado en un requerimiento: El usuario debe exportar a Excel el siguiente formato:
2014 | 2013 | Presupuesto 2014 | |
---|---|---|---|
Ventas | 10,000 | 8,000 | 10,000 |
Compras | 3,000 | 2,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
2014 | 2013 | |
---|---|---|
Ventas | 10,000 | 8,000 |
Compras | 3,000 | 2,000 |
Chart Presupuesto de Ventas y Compras para el Año Max
Columna que debe ser eliminada al momento de mandar a excel | 2014 |
---|---|
Presupuesto de Ventas | 8,000 |
Presupuesto de Compras | 2,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.
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:
Anio | Medida | Monto | Presupuesto |
---|---|---|---|
2014 | Ventas | 10,000 | 10,000 |
2014 | Compras | 3,000 | 2,500 |
2013 | Ventas | 8,000 | 0 |
2013 | Compras | 2,000 | 0 |
Con esta estructura de BD se facilita las cosas al momento de montar la información.
Gracias pos su apoyo.
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,
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.
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:
Anio | Medida | Monto | Presupuesto |
---|---|---|---|
2014 | Ventas | 10,000 | 10,000 |
2014 | Compras | 3,000 | 2,500 |
2013 | Ventas | 8,000 | 0 |
2013 | Compras | 2,000 | 0 |
Con esta estructura de BD se facilita las cosas al momento de montar la información.
Gracias pos su apoyo.