参考原文如下:Excel Power Query合并工作簿出错怎么办?
原文内容很长,出现这个问题的原因是需要合并的excel表格的sheet名称不一致(例如,需要合并3个工作表的第一个sheet,但是每个工作表的第一个sheet的名称不一致,第一个工作表的sheet1是data1,第二个工作表的sheet是data2,第三个工作表的sheet是data3)
解决方案:
1、参考资料建议的是去掉Iterm条件,本人尝试过,发现会报错;因此选用第二种策略,即重命名这些表格的sheet1的名称,使其一直,参考资料如下:https://jingyan.baidu.com/article/fec4bce2b8f0c6f2608d8b73.html
2、将需要合并的表格放在同一个文件夹下,然后在这个文件夹的上一次新建excel表格,打开表格并进入VBA代码编辑器(参考:1.2-在哪里写VBA — Excel-VBA),然后输入以下代码,并根据自己的内容修改:
Sub mname()
Dim filename As String, twb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
filename = Dir(ThisWorkbook.Path & "\data\" & "*.xlsx")
Do While filename <> ""
fn = ThisWorkbook.Path & "\data\" & filename
Set twb = Workbooks.Open(fn)
twb.Worksheets(1).Name = "sheet1"
twb.Close True
filename = Dir
Loop
Application.DisplayAlerts = True
Application.DisplayAlerts = True
End Sub
需要修改的代码内容:
filename = Dir(ThisWorkbook.Path & "\data" & "\*.xlsx"),根据需要替换掉data,以获取工作表名称,例如工作表所在文件夹名称为app,则将data替换为app
fn = ThisWorkbook.Path & "\data\" & filename,同理替换掉data,以获取工作表路径;
twb.Worksheets(1).Name = "sheet1",根据需要将每个工作表的第N个sheet的名称统一重命名,例如,需要将每个工作表的第5个sheet统一重命名为 sheet5,则将Worksheets后括号的参数改为5,Name = 后的参数改为sheet5
3、修改完上述代码后,点击绿色运行按钮运行,待代码运行完,每个工作表的sheet名称就一致了,此时继续合并工作表就不会报错了。