엑셀 Power Query 동적 파일 경로 설정: 파일 위치가 바뀔 때 매개변수로 연결 유지

엑셀 Power Query가 처음에는 정상적으로 새로고침되다가 파일 위치를 옮긴 뒤 갑자기 실패하는 경우가 있습니다. 특히 다른 PC에서 파일을 열거나, 네트워크 공유 폴더 경로가 바뀌거나, OneDrive와 SharePoint 경로를 혼용했을 때 이런 문제가 자주 나타납니다.

많은 경우 원인은 Power Query가 참조하는 파일 경로가 File.Contents("C:\...")처럼 고정 문자열로 들어가 있기 때문입니다. 파일을 다른 폴더로 옮기거나, 팀원이 같은 파일을 다른 동기화 경로에서 열면 새로고침이 실패할 수 있습니다.

Power Query의 동적 파일 경로 설정은 이런 고정 경로를 셀 값이나 매개변수로 분리해 관리하는 방법입니다. 다만 로컬·네트워크 파일 경로와 OneDrive·SharePoint 경로는 같은 방식으로 처리하면 안 됩니다.

엑셀 Power Query에서 파일 경로를 매개변수로 바꿔 새로고침 오류를 줄이는 개념 이미지
Power Query에서 파일 경로를 수식에 고정하면 파일 이동이나 공유 위치 변경 뒤 새로고침이 실패할 수 있습니다. 위 이미지는 동적 파일 경로와 매개변수 설정 구조를 설명하기 위한 대표 개념 이미지입니다.

이 글은 Microsoft의 Power Query 매개변수, Excel.CurrentWorkbook, File.Contents, Folder.Files, SharePoint.Files 공식 문서를 기준으로 작성했습니다. 예제 경로와 파일명은 설명용이며, 실제 폴더 구조와 파일명은 사용 중인 환경에 맞게 바꿔야 합니다.

파일 경로를 고정하면 왜 새로고침이 실패할까요?

Power Query 편집기에서 파일을 선택해 쿼리를 만들면 M 코드 안에 원본 경로가 직접 들어가는 경우가 많습니다.

let
    Source = Excel.Workbook(
        File.Contents("C:\Reports\Sales\monthly_sales.xlsx"),
        null,
        true
    )
in
    Source

위처럼 경로가 고정돼 있으면 다음과 같은 상황에서 문제가 생길 수 있습니다.

  • 파일을 다른 폴더로 이동함
  • 네트워크 드라이브 문자가 PC마다 다름
  • OneDrive 동기화 폴더 이름이 사용자마다 다름
  • 공유 파일을 SharePoint URL이 아닌 개인 PC의 로컬 동기화 경로로 연결함
  • 같은 보고서 템플릿을 다른 월별 파일에 재사용해야 함

이럴 때는 원본 경로를 쿼리 안에 고정하지 말고, 파일 경로나 폴더 경로를 매개변수로 분리하는 편이 유지 관리에 유리합니다.

가장 단순한 방법: Excel 셀 값을 경로로 읽어오기

같은 통합 문서 안에서 경로를 관리하고 싶다면 시트의 셀 값을 Power Query가 읽어오게 할 수 있습니다.

예를 들어 현재 통합 문서에 다음 이름을 만든다고 가정합니다.

  • pqFolderPath → 폴더 경로가 들어 있는 셀
  • pqFileName → 파일명이 들어 있는 셀

폴더 경로 셀에는 C:\Reports\Sales\처럼 입력하고, 파일명 셀에는 monthly_sales.xlsx처럼 입력합니다.

그다음 Power Query에서 다음과 같이 경로를 조합할 수 있습니다.

let
    FolderPathRaw =
        Excel.CurrentWorkbook(){[Name="pqFolderPath"]}[Content]{0}[Column1],
    FileNameRaw =
        Excel.CurrentWorkbook(){[Name="pqFileName"]}[Content]{0}[Column1],

    FolderPath =
        Text.Trim(FolderPathRaw),
    FileName =
        Text.Trim(FileNameRaw),

    NormalizedFolderPath =
        if Text.EndsWith(FolderPath, "\") or Text.EndsWith(FolderPath, "/")
        then FolderPath
        else FolderPath & "\",

    FullPath =
        NormalizedFolderPath & FileName,

    Source =
        Excel.Workbook(File.Contents(FullPath), null, true)
in
    Source

이 방식의 장점은 파일 위치가 바뀌었을 때 수식 전체를 고치지 않고 셀 값만 바꿔도 된다는 점입니다.

셀 기반 경로 관리가 적합한 경우

같은 템플릿 파일을 여러 사용자나 여러 월별 파일에 재사용할 때
파일명을 자주 바꾸지만 쿼리 구조는 그대로 유지할 때
보고서 사용자에게 쿼리 편집기 대신 셀만 수정하게 하고 싶을 때

Power Query 매개변수를 직접 사용하는 방법

경로를 시트 셀에 두지 않고 Power Query 안에서 관리하려면 매개변수 관리 기능을 사용할 수 있습니다.

  1. Power Query 편집기에서 홈 → 매개변수 관리 → 새 매개변수를 엽니다.
  2. 예: pFilePath라는 텍스트 매개변수를 만듭니다.
  3. 현재 값에 파일 전체 경로를 입력합니다.
  4. 원본 단계에서 고정 문자열 대신 매개변수를 사용합니다.
let
    Source =
        Excel.Workbook(File.Contents(pFilePath), null, true)
in
    Source

매개변수 방식은 시트 구조와 무관하게 Power Query 내부에서 값을 관리할 수 있다는 장점이 있습니다. 반면 경로를 바꾸려면 편집기에서 매개변수 값을 수정해야 하므로, 일반 사용자가 직접 경로를 바꿔야 하는 템플릿에는 셀 기반 방식이 더 편할 수 있습니다.

폴더는 고정하고 파일명만 바뀔 때는 Folder.Files가 더 편할 수 있습니다

같은 폴더 안에서 월별 파일만 바뀌거나, 폴더 안 파일 목록에서 특정 파일을 찾아야 한다면 Folder.Files로 접근하는 방식이 더 유연할 수 있습니다.

let
    FolderPath =
        Excel.CurrentWorkbook(){[Name="pqFolderPath"]}[Content]{0}[Column1],

    FileName =
        Excel.CurrentWorkbook(){[Name="pqFileName"]}[Content]{0}[Column1],

    Source =
        Folder.Files(Text.Trim(FolderPath)),

    Filtered =
        Table.SelectRows(
            Source,
            each [Name] = Text.Trim(FileName)
        ),

    Checked =
        if Table.RowCount(Filtered) = 0
        then error "지정한 폴더에서 파일을 찾지 못했습니다."
        else Filtered,

    FileBinary =
        Checked{0}[Content],

    Workbook =
        Excel.Workbook(FileBinary, null, true)
in
    Workbook

이 구조는 폴더 경로는 유지하되 가져올 파일명만 바꾸고 싶을 때 유용합니다. 단, 폴더 안에 같은 이름의 파일이 여러 개 있지 않은지 확인하는 편이 좋습니다.

SharePoint와 OneDrive는 로컬 파일 경로처럼 다루지 않는 편이 안전합니다

협업용 파일이 SharePoint 또는 OneDrive for Business에 있다면, 개인 PC의 동기화 폴더 경로를 기준으로 File.Contents를 쓰는 방식은 다른 사용자 환경에서 깨질 수 있습니다.

예를 들어 한 사용자 PC에는 다음과 같은 경로가 보일 수 있습니다.

C:\Users\UserA\OneDrive - Company\Reports\monthly_sales.xlsx

하지만 다른 사용자 PC에서는 OneDrive 폴더 이름이나 동기화 위치가 달라질 수 있습니다. 팀이 함께 사용하는 쿼리라면 SharePoint 연결 함수를 사용하는 편이 더 일관적입니다.

let
    SiteUrl =
        "https://contoso.sharepoint.com/sites/Finance",

    Source =
        SharePoint.Files(SiteUrl, [ApiVersion = 15]),

    Filtered =
        Table.SelectRows(
            Source,
            each [Folder Path] = SiteUrl & "/Shared Documents/Reports/"
                and [Name] = "monthly_sales.xlsx"
        ),

    Checked =
        if Table.RowCount(Filtered) = 0
        then error "SharePoint에서 지정한 파일을 찾지 못했습니다."
        else Filtered,

    FileBinary =
        Checked{0}[Content],

    Workbook =
        Excel.Workbook(FileBinary, null, true)
in
    Workbook

즉, 로컬 또는 네트워크 파일은 File.ContentsFolder.Files, SharePoint·OneDrive 협업 파일은 SharePoint.Files 계열 연결을 우선 검토하는 편이 안전합니다.

동적 파일 경로를 만들었는데도 새로고침이 안 될 때

경로만 바꿔도 끝나는 경우가 있지만, 실제로는 다음 문제가 함께 섞여 있는 경우가 많습니다.

1. Expression.Error: 파일을 찾을 수 없음

폴더 경로 끝의 \가 빠졌거나, 파일명이 바뀌었거나, 경로 셀에 공백이 포함돼 있으면 발생할 수 있습니다.

  • 폴더 경로 끝 구분자가 있는지 확인
  • 파일명 오타 확인
  • 셀 값 앞뒤 공백 제거
  • 실제 파일이 해당 위치에 있는지 확인

2. DataSource.Error: 액세스 또는 권한 문제

경로는 맞지만 파일이나 폴더에 접근 권한이 없으면 권한 관련 오류가 날 수 있습니다. 네트워크 공유 폴더나 SharePoint에서는 특히 계정 권한을 함께 확인해야 합니다.

3. Formula.Firewall: 개인정보 수준 충돌

경로를 Excel.CurrentWorkbook에서 읽고 다른 외부 원본과 결합할 때 Power Query의 개인 정보 수준 문제로 Formula.Firewall 오류가 발생할 수 있습니다. 이 경우는 파일 경로 문제가 아니라 원본 결합 방식과 개인 정보 수준 설정을 따로 봐야 합니다.

4. DataFormat.Error: 파일은 열리지만 데이터 형식이 맞지 않음

경로 문제를 해결한 뒤에도 날짜·숫자 형식 변환 단계에서 DataFormat.Error가 생길 수 있습니다. 이 경우는 원본 연결이 아니라 데이터 변환 단계의 문제입니다.

경로를 셀에서 읽을 때 자주 놓치는 부분

  • 이름 범위가 아니라 단순 셀 주소만 만들어 두고 Excel.CurrentWorkbook에서 찾으려는 경우
  • 폴더 경로 끝의 구분자가 빠진 경우
  • 파일명에 확장자를 빼먹은 경우
  • 시트에서 보이는 값과 실제 저장된 값 사이에 공백이 들어간 경우
  • OneDrive 동기화 로컬 경로를 팀 공용 경로로 오해한 경우
  • 경로는 바꿨지만 원본 파일 안의 시트 이름이나 테이블 이름은 이미 변경된 경우

어떤 방식으로 경로를 관리할지 먼저 결정하면 편합니다

같은 보고서 파일을 여러 사람이 복사해 쓰는 템플릿
시트 셀 + Excel.CurrentWorkbook 방식이 관리하기 쉽습니다.
Power Query 편집기 안에서 값만 바꿔 관리하고 싶음
매개변수 관리 기능을 사용합니다.
같은 폴더 안에서 파일명만 바뀜
Folder.Files로 폴더를 읽고 파일명을 조건으로 찾는 방식이 유연합니다.
팀이 SharePoint·OneDrive for Business 파일을 함께 사용함
로컬 동기화 폴더보다 SharePoint 연결 함수를 우선 검토합니다.

내용 확인에 사용한 Microsoft 공식 자료

공식 문서 확인일: 2026년 7월 28일

Post a Comment

다음 이전