excel vba使用通配符*时报错

我在mac上安装了excel2016,在一个目录下有多个excel表格,想要合并这些表格到一个表格中。使用百度经验的代码:Sub合并当前目录下所有工作簿的全部工作表()D... 我在mac上安装了excel 2016,在一个目录下有多个excel表格,想要合并这些表格到一个表格中。使用百度经验的代码:

Sub 合并当前目录下所有工作簿的全部工作表()
Dim MyPath, MyName, AWbName
Dim Wb As Workbook, WbN As String
Dim G As Long
Dim Num As Long
Dim BOX As String
Application.ScreenUpdating = False
MyPath = ActiveWorkbook.Path
MsgBox MyPath
MyName = Dir(MyPath & "/" & "*.xls") //这里报运行时错误53,未找到文件
AWbName = ActiveWorkbook.Name
MsgBox AWbName
Num = 0
Do While MyName <> ""
If MyName <> AWbName Then
Set Wb = Workbooks.Open(MyPath & "/" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)
Next
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
End With
End If
MyName = Dir
Loop
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub

MyName=Dir(...)那一行报错,我将“*.xls”删掉或者改成一个具体的xls文件,如“abc.xls”时,运行正常。感觉是通配符*的解析出错了?有人知道怎么解决吗?
另外,在windows下,excel 2016中,这一行不会报错,但是合并过程中excel会崩掉,但是在mac下,excel 2016中,这一行会报错。。
展开
 我来答
v笑的鱼88
2018-12-26 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:100%
帮助的人:21.1万
展开全部

Sub 整理宏()

Dim mypath, myname, awbname

Dim wb As Workbook, wbn As String

Dim g As Long

Dim num As Long

Dim box As String

Application.ScreenUpdating = False

mypath = ActiveWorkbook.Path

myname = Dir(mypath & "\" & "*.xls")

awbname = ActiveWorkbook.Name

num = 0

Do While myname <> ""

If myname <> awbname Then

Set wb = Workbooks.Open(mypath & "\" & myname)

num = num + 1

With Workbooks(1).ActiveSheet

.Cells(.Range("a65536").End(xlUp).Row + 2, 1) = Left(myname, Len(myname) - 4)

For g = 1 To Sheets.Count

wb.Sheets(g).UsedRange.Copy .Cells(.Range("a65536").End(xlUp).Row + 1, 1)

Next

wbn = wbn & Chr(13) & wb.Name

wb.Close False

End With

End If

myname = Dir

Loop

Range("a1").Select

Application.ScreenUpdating = True

MsgBox "共合并了" & num & "个工作薄下的全部工作表。如下:" & Chr(13) & wbn, vbInformation, "提示"

End Sub

清风吧吧啦
推荐于2017-10-02 · TA获得超过5937个赞
知道大有可为答主
回答量:3426
采纳率:68%
帮助的人:755万
展开全部
MyName = Dir(MyPath & "\" & "*.xls")
斜杠输入错误。改成 \
追问
在unix系统下路径使用的是“/”,windows下是“\”。这个没有问题。我把通配符改成具体的.xls文件就能合并了
追答
经测试在win系统下没有出错。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mzz9060
2017-04-26 · TA获得超过1326个赞
知道小有建树答主
回答量:773
采纳率:84%
帮助的人:197万
展开全部
Dir(MyPath & "/" & "*.xls") 更改成:Dir(MyPath & "/", MacID("xls"))
MyName = Dir 更改成 MyName = Dir("")
更多追问追答
追问

还是不行,感觉没检测到111.xls和222.xls,没有合并成功:

追答
这句改成:
Dir(MyPath & "/", MacID("XLS5"))
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ExcelPower
2017-04-26 · 专业Excel公式图表数据分析VBA
ExcelPower
采纳数:4495 获赞数:11863

向TA提问 私信TA
展开全部
*.xls
改为 *.xls*
追问

MyName = Dir(MyPath & "/" & "*.xls* ")这样吗?还是有错啊


目录下的文件:

想把111.xls和222.xls合并到1.xls中,上面的*.xls改成111.xls能合并111.xls到1.xls中。感觉就是通配符的问题。。。

追答
可能 Mac  里 Dir 不支持  模糊查找
没用过Mac
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MissFox
2017-10-02
知道答主
回答量:8
采纳率:0%
帮助的人:9151
展开全部
我也遇到的同样的问题,请问解决了嘛?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式