Jump to content

ArmandoR

Members
  • Content Count

    16
  • Joined

  • Last visited

  • Country

    Spain
  1. Muchas gracias. No consigo adecuar la sentencia que me mandas a la tabla. No puedo enviarte ni siquiera el fichero porque, aunque quite todo lo que se pueda, pesa más de la cuenta. Si yo me voy a las propiedades de la conexión, tengo dos: - CLIENTES$, que se corresponde con la tabla "clientes" - Excel ORIGEN_DATOS, que se correponde con las tablas "ventas" y "ventas antiguas" No sé si te puedo ayudar más con la descripción... Gracias de todas formas Armando
  2. Buenos días compañer@s, espero que estéis todos bien. tengo una consulta en relación con actualizar vía una macro el origen de los datos en power pivot. Creo que no hace falta subir el fichero pero si así fuese lo hago. el origen está compuesto por tres hojas excel guardadas en el archivo ORIGEN_DATOS. Este libro se compone de tres hojas, VENTAS, VENTAS _ANTIGUAS y CLIENTES. He generado una macro que me actualiza los datos: ActiveWorkbook.Connections("Excel ORIGEN_DATOS").Refresh Mi pregunta es, si únicamente quisiese actualizar VENTAS, se podría poner el el código?. La verdad, no encuentro cómo hacerlo a no ser que cree tres conexiones indenpendientes y no de golpe desde power pivot Espero haberrme explicado Muchas gracias
  3. Buenas noches compañeros, a quien le pueda interesar dejo una interesante macro que transforma los números en letras. Hay varios ejemplos para que veáis su potencial. A mi particularmente me ha venido muy bien para la elaboración de contratos donde tienen que ir números y letras siempre. Me la descargé hace tiempo de algún sitio que no me acuerdo. Por lo tanto no es un desarrollo mío Espero que pueda ser de vuestra utilidad EjemplosNumLetra.xlsm
  4. Muy muy bueno Antoni. Muchas gracias
  5. Gracias Antoni, tienes razón pero estoy empezando en la gestión de proyectos y yo creo que en excel me podría valer más que de sobra este tipo de desarrollos ya que no van a ser muy complejos.
  6. Buenas noches compañeros, adjunto fichero excel que he modificado en función de mis necesidades. En su momento fue colgado en este foro por Antoni (un grandísimo trabajo) y yo he intentado amoldarlo para que se adapte a lo que necesito dentro de la gestión de proyectos. Mi pregunta es si es posible que las barras que se generan puedan incluir además el estado de progreso que se representa en la columna I Muchas gracias TOR_PRUEBA_2.xlsm
  7. Muchas gracias bigpetroman , la verdad es que funciona a la perfección. Una duda, en caso de que quisiese que me apareciese el dato en una celda en concreto en vez de en un msgbox? Gracias de nuevo
  8. Estimados compañeros, a ver si me podéis hechar una mano con esta duda que tengo. Os adjunto dos ficheros, el primero (Calculo) calcula en una celda mediante sumaproducto el dato de otro fichero excel (BD). Hasta ahí no tengo problemas y la macro es fácil de crear: Sub CALCULO() ActiveCell.FormulaR1C1 = _ "=SUMPRODUCT((BD.xlsb!R2C1:R2321C1=RC[-2])*(BD.xlsb!R2C4:R2321C4=RC[-1]),BD.xlsb!R2C6:R2321C6)" ActiveCell = ActiveCell.Value End Sub El tema es que lo que necesito es que ese cálculo sea mediante el siguiente código (como una variable ya que a veces me interesará traerme el dato y otras no) Sub CALCULO() Dim avl As Variant Av1 = Application.WorksheetFunction.SUMPRODUCT((BD.xlsb!R2C1:R2321C1=RC[-2])*(BD.xlsb!R2C4:R2321C4=RC[-1]),BD.xlsb!R2C6:R2321C6) End Sub No logro dar con la programación adecuada Muchas gracias por vuestra ayuda BD.xlsb Calculo.xlsb
  9. Me funciona a la perfección Muchas gracias por vuestro asesoramiento. Vuelvo a repetirlo, es un placer estar en un foro como este con gente tan profesional y altruista como vosotros
  10. Buenas de nuevo, me da fallo pero entiendo que es porque algo estoy haciendo mal. Creo que para mi sería más fácil trabajarlo sobre la estructura del módulo que tenía inicialmente. Tener en cuenta que me estoy metiendo ahora en este tipo de programación (atacar desde excel bbdd ) y estoy muy verde. Muchas gracias y disculpar
  11. Muchas gracias César. Me conecto al curro y me pongo con ello. Da gusto que gente como vosotros (todos los del foro que entendéis a fondo VBA) nos ayudéis al resto a mejorar. Esto no tiene precio. En serio.
  12. Buenos días, disculpar mi torpeza Adjunto de nuevo fichero con una pestaña nueva ("BD") donde están los datos (parte lógicamente) a los que ataca la conexión. VENTAS.xlsb
  13. Lo siento. Adjunto archivo. VENTAS.xlsb
  14. Buenos compañer@s, a ver si me podéis ayudar con esta macro. En esencia se conecta al AS400 de mi empresa (previa vista generada) y me trae datos a través de una consulta SQL. La macro funciona bien y no tengo problemas. El tema es que no sé trabajar recorriendo el RECORDSET y me toca ingeniármelas con un bucle Do Loop para que me vaya generando los datos que quiero. Os detallo la macro y las celdas donde me trae los datos. Lo que me gustaría es poder establecer el rango("C5:C18") de alguna forma en el RECORDSET para que lo hiciese de golpe y no recorriendo celda a celda. Asimismo, si por ejemplo, quisiese ampliar el rango de la matriz de datos y meter, por ejemplo, en D3 el mes 11, en D4 el mes 12, que me trajese los datos. Muchas gracias Option Explicit Option Base 1 Public Sub VENTAS_SECCION_MES() Dim sql As String, SheetName As String Dim AÑO, CENTRO, SECCION, MES As String Sheets("Ventas").Select Range("C5").Select Do Until ActiveCell.Offset(0, -1) = "" AÑO = Range("C2").Value CENTRO = Range("A3").Value MES = Range("C3").Value SECCION = ActiveCell.Offset(0, -2).Value Application.Cursor = xlWait Dim wb As Workbook, ws As Worksheet 'Venta de un año, un mes, una tienda y una sección sql = _ "SELECT SUM(TOT_VENTAS) AS TOTAL_VENTAS " & _ "FROM PRESUPUESTO_VENTAS " & _ "WHERE ANYO = " & AÑO & " AND COD_CC = " & CENTRO & " AND SECCION= " & SECCION & " AND MES= " & MES & " " SheetName = "Ventas" Set wb = ActiveWorkbook Set ws = wb.ActiveSheet ws.Name = SheetName ' Poner los datos particulares de la conexión Dim Con As New ADODB.Connection Con.Open "provider=IBMDA400;data source=172.16.1.1;Default Collection=-------;USER ID=-----;PASSWORD=-------;" DownloadQuery Con, sql, SheetName ActiveCell.Offset(1, 0).Select Con.Close Loop Set Con = Nothing Set wb = Nothing Set ws = Nothing Application.Cursor = xlDefault End Sub Private Sub DownloadQuery(Con As ADODB.Connection, sql As String, SheetName As String) Dim Cmd As ADODB.Command Dim Rs As ADODB.Recordset Set Cmd = New ADODB.Command Set Cmd.ActiveConnection = Con Cmd.CommandText = sql Dim ws As Worksheet, fld As ADODB.Field Set ws = Worksheets(SheetName) Set Rs = Cmd.Execute() ' Me trae el dato de la Consulta SQL ActiveCell.CopyFromRecordset Rs Set fld = Nothing Set Rs = Nothing End Sub
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png