PowerQuery - 文件夹查询导入新文件

时间:2016-06-05 00:10:25

标签: excel powerpivot powerbi powerquery

如果我创建了一个从文件夹导入XML的PowerQuery函数,当文件夹中有新文件只包含来自这些新文件的数据并将数据附加到文件夹时,如何在同一个excel文件中重用查询目前的表?

2 个答案:

答案 0 :(得分:1)

您可以使用简单的vba脚本来查看文件夹以进行文件更改,该脚本使用WMI每隔n秒轮询一次目录内容。

类似于此......

Sub WatchDirectory(dir as string, every as integer)    
  Set wmisvc = GetObject("winmgmts:\\.\root\cimv2")
  let query = "SELECT * FROM __InstanceOperationEvent " _
        & "WITHIN " & every _
        & " WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
        & "TargetInstance.GroupComponent='Win32_Directory.Name=" _
        & Chr(34) & dir & Chr(34) & "'"

  Set events = wmisvc.ExecNotificationQuery(query)

  Do While True
    Set event = events.NextEvent()
    if event.Class = "__InstanceCreationEvent" then 
       ....
    end if
  Loop

有关wmi的更多信息,请参阅https://sites.google.com/site/beyondexcel/project-updates/exposingsystemsecretswithvbaandwmiapi

有关使用WMI观看文件的更多详细信息,请参阅https://blogs.technet.microsoft.com/heyscriptingguy/2005/04/04/how-can-i-monitor-for-different-types-of-events-with-just-one-script/

答案 1 :(得分:1)

如果您使用来自文件/来自文件夹启动Power Query并浏览到您的文件夹,您会看到每个文件在表格中表示为一行,其中包含修改日期的列即可。您可以使用修改日期上的日期/时间过滤器或必要时更复杂的过滤来过滤该列表(发布您的具体要求,我会尝试引导您朝着正确的方向)。

将查询过滤为“新文件”后,您可以将[内容]列传递到您的函数中。

最后根据预先存在的查询中保存的Excel表输出以及上面的“新文件”查询附加新查询,以获得组合输出。新查询将设置为加载到/仅创建连接