You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery刷新报DataSource.Error文件被占用的解决方法咨询

Power Query读取被占用Excel文件报错解决方案

DataSource.Error: The process cannot be access the file.......because it is being used by another process.

该报错的核心原因是File.Contents函数读取本地文件时需要申请文件读权限,当文件被其他用户/进程以独占模式打开时,权限申请被拒绝就会触发错误,以下是可落地的解决方案:

  • 方案1:修改Power Query M代码,先复制临时副本再读取
    该方案兼容性最高,无需修改源文件设置,直接替换你当前的查询语句即可:

    let
        // 定义源文件路径
        SourcePath = "C:\Users\G019\OneDrive - Client\P_MC\1 Client File\Official List_1Drive.xlsx",
        // 生成临时文件存放路径
        TempPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Temp\PQ_Temp_" & Text.From(DateTime.FixedLocalNow()) & ".xlsx",
        // 复制源文件到临时路径(复制操作无需独占权限,源文件被占用时也可正常执行)
        CopyFile = File.Copy(SourcePath, TempPath, true),
        // 读取临时文件内容
        Source = Excel.Workbook(File.Contents(TempPath), null, true),
        // 可选步骤:读取完成后删除临时文件,避免占用本地存储空间
        DeleteTemp = File.Delete(TempPath)
    in
        Source
    
  • 方案2:使用OneDrive在线直链作为数据源(适配当前OneDrive存储场景)
    你的源文件存放在OneDrive同步目录下,可直接通过OneDrive在线链接读取,完全绕过本地文件系统的锁机制:

    1. 浏览器登录OneDrive网页端,找到Official List_1Drive.xlsx文件
    2. 右键文件选择「嵌入」,生成嵌入代码后提取其中的src属性链接
    3. 将Power Query的源替换为Web.Contents("你提取到的直链地址")即可,源文件被本地打开完全不影响在线读取
  • 方案3:设置源文件为共享编辑模式
    打开Official List_1Drive.xlsx,依次点击「文件」-「信息」-「共享工作簿(旧版)」,勾选「允许多用户同时编辑,同时允许工作簿合并」后保存,设置完成后文件不会以独占模式被打开,其他进程可正常读取文件内容。

  • 方案4:定期生成数据源只读快照
    如果源文件更新频率不高,可编写简单的批处理脚本,定时将源文件复制为同目录下的只读快照文件,Power Query直接读取快照,哪怕源文件被占用也不会影响刷新。

内容的提问来源于stack exchange,提问作者12Rev79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:09:00