Saltar al contenido

Cambiar ruta de archivo sin abrir editor de Power Query


Edgar MF

Recommended Posts

publicado

Hola expertos

Es posible cambiar la ruta de un archivo en Power Query sin tener que abrir el editor?

Trate de grabar la macro pero al revisar el codigo no contiene nada :huh:

La idea es colocar un boton que al  presionarlo me traiga un msgbox solicitando la ruta donde el usuario unicamente la agrege y en automatico power query actualice la tabla con base a la ruta agregada. Mis libros contienen la misma información por lo que la estructura de la tabla seria la misma siempre lo unico que cambiaria seria la ruta

Agradezco mucho su ayuda

 

Saludos

 

publicado

Edgar

El entorno PQ es muy diferente a VBA, eso si, se pueden hacer muchos procesos para el tratamiento y transformación de datos

¿que tantas rutas seran utilizadas para procesar esos datos? ¿es muy variable y porque?

Mientras sigo investigando un poco mas, hay una alternativa pero siempre tenemos que abrir el editor, se puede crear una especie de lista desplegable para escoger una entre varias rutas... ¿te interesa?

@johnmpl @GabrielRaigosa que opinan!

 

Saludos 

publicado

Que tal Gerson 

Suena muy bien lo de la lista desplegable, el unico problema es que las rutas pueden ser variables debido a que se trata de un archivo el cual se subira a una plataforma como template y varias plantas de la misma compañia ingresarán a la plataforma, descargarán el archivo y lo guardarán en la ruta que cada planta elija. 

 La idea es que cuando ya tengan el archivo actualicen la ruta y las tablas del PQ obtengan el resumen de acuerdo a los datos arrojados, la estructura de los archivos en cada ruta es la misma por lo que solo bastaría con actualizar la ruta para mantener actualizado el informe.

Con la opción de lista desplegable tendría que tener definidas las rutas a utilizar por cada planta para agregarlas a la lista 

Saludos 

publicado
En 4/5/2018 at 14:08 , Edgar MF dijo:

cambiar la ruta de un archivo en Power Query sin tener que abrir el editor

Power Query – source reference as filepath in cell

How to auto-parametrize your Power Query queries

no te olvides de ajustar los niveles de privacidad

saludos,
hector.

publicado
En ‎5‎/‎6‎/‎2018 at 23:48 , Héctor Miguel dijo:

Que tal Hector

Revisando los link la opción 1 me parece que es la se adapta a mis necesidades sin embargo intente realizar los pasos descritos

pero no tuve exito :(

Tendrás el ejemplo del archivo para tomarlo como referencia?

 

Agradezco mucho su ayuda

 

 

 

 

publicado

Hola Edgar

Te tengo 2 noticias, una buena y otra mala [¿cual quieres primero:D?]

La buena es que tomando como referencia una celda, con la idea del enlace que mando Hector, se puede, pero lo único es que ese método no esta contemplado para carpetas, si no para un archivo, pero logre obtenerlo, para que la ruta sea automática sin abrir el editor de PQ y funciona correctamente

Para comenzar incluye todos los archivos en una subcarpeta se llamara "Archivos", dejando aparte el archivo con el proceso, es decir, en una carpeta guardas el archivo PQ y dentro de esta, una subcarpeta los demas archivos

En el archivo, reservaras una hoja para la ruta, aquí insertaras una TABLA con nombre Tabla1 y la columna con nombre "Ruta"

La mala es que si bien me ha funcionado, pero al cambiar de PC, falla hasta cierto paso, pues al parecer PQ, nos guarda algo como definido/constante y ahi se debe modificar [solo una vez] para que reconozca la nueva PC, pues ya lo hice y vuelve a funcionar

En resumen tu pega es que tienes que usar este procedimiento en distintas PC

Ya nos comentaras como te fue

Observas las pantallas

5af48e8499b76_Powerquery.thumb.gif.608b1afc3c3fa952ab959f13e18dc24b.gif

5af48eb95115d_Powerquery2.thumb.gif.25bb1c98002246415056c92b76067c64.gif

 

Saludos 

Formato Countif VBA.rar

publicado

Muchas gracias a todos por su ayuda,  hasta ahora con el ejemplo de Gerson me va de maravilla solo para complementarlo le agrege una macro para colocar la ruta en la tabla y una vez colocada actualiza el PQ y listo de hecho no fue necesario dejar la columna de Archivos.

Y al menos en las PC´s donde lo he probado no tengo problema, 

Agradezco mucho su ayuda ya que me a facilitado mucho el trabajo :D

 

 

 

publicado
Hace 11 horas, Edgar MF dijo:

Muchas gracias a todos por su ayuda,  hasta ahora con el ejemplo de Gerson me va de maravilla solo para complementarlo le agrege una macro para colocar la ruta en la tabla y una vez colocada actualiza el PQ y listo de hecho no fue necesario dejar la columna de Archivos.

Y al menos en las PC´s donde lo he probado no tengo problema, 

Agradezco mucho su ayuda ya que me a facilitado mucho el trabajo :D

 

 

 

Pues me parece estupendo... ¿que dices si le damos APLAUSOS  a power query!?:D

 

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.