将数据从PQ加载到Excel时可能也会出现类似下面的提示:
针对这两种错误,主要是由以下两种情况导致的:
1、要合并汇总的数据是从某些专业平台或系统导出的xls(2003版以前)格式Excel文件;
2、文件夹中包含了一些临时的缓存文件。
- 情况1:xls文件 -
首先要说明的是,并不是Power Query不支持xls格式Excel文件的读取,只是某些专业平台或系统导出的xls文件读取会出错而已。
当你用PQ接入某个xls文件出现错误时,基本都是这种原因。解决的办法也很简单,用Excel打开该文件,然后另存为xlsx格式即可。
当然,这种情况下,往往需要导入的文件都是一大批的,一个个打开另存可能比较麻烦,为了方便,可以收藏一段VBA代码用于自动化处理:
Sub save_xls_to_xlsx() '作者:大海 '日期:2019-11-9 '公众号:Excel到PowerBI Dim folder As FileDialog Dim f, fdi As FileDialogSelectedItems Dim i As Integer Dim file_count As Integer Dim xls_file As String Dim xlsx_file As String Dim wb As Workbook Set folder = Application.FileDialog(msoFileDialogFolderPicker) folder.Show Set fdi = folder.SelectedItems If fdi.Count = 0 Then MsgBox "未选择任何文件夹。" Exit Sub End If For Each f In fdi xls_file = Dir(f & "\*.xls") file_count = 0 Do If Right(xls_file, 4) = ".xls" Then Set wb = Workbooks.Open(f & "\" & xls_file) Application.ScreenUpdating = False xlsx_file = f & "\" & xls_file & "x" ActiveWorkbook.SaveAs Filename:=xlsx_file, FileFormat:=xlWorkbookDefault, CreateBackup:=False wb.Close savechanges:=False Kill f & "\" & xls_file '若不想删除原文件,可注释掉本行 file_count = file_count + 1 Application.ScreenUpdating = True End If xls_file = Dir Loop Until xls_file = "" Next MsgBox "该文件夹下的xls文件(共" & CStr(file_count) & "个)已全部转换为xlsx文件。谢谢您对大海的支持!" End Sub
- 情况2:临时缓存文件 -
这种情况处理比较简单,在从文件夹导入数据时,就能看到(文件名开头为“~$”),这种文件产生的原因有很多,比如文件正在打开的过程中,或者出现操作错误没有正常退出等等:

这些文件通常都是不需要的,所以,PQ从文件夹读入文件后,即可直接通过筛选(文件名开头不是“~$"的工作簿)的方式去掉:


Power新书榜第1 | 最适合入门打基础
当当京东超低折扣进行中
- 最通俗易懂Power系列视频 -
购书领60元视频券 or 直购视频送签名书
点“阅读原文”看视频
11·11大促狂欢
腾讯课堂领券直减50元
本文配套材料下载
(按文章发布日期确定对应文件)
https://share.weiyun.com/5YKFr4Z