Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8586|回复: 6

[已解决]批量将xls工作簿批量转成xlsx工作簿

[复制链接]
发表于 2015-2-12 10:09 | 显示全部楼层 |阅读模式
Sub 更改格式()
  Dim objShell As Object
  Set objShell = CreateObject("Wscript.Shell")
  Dim msg As String
  Dim f, Mywb As String, str$
  Dim Sht As Worksheet
  Dim i As Long
  Dim count As Integer
   Application.ScreenUpdating = False
   Mywb = ThisWorkbook.Name
    f = Dir(ThisWorkbook.Path & "\*.xls")  'F是工作簿名称
    Do While f > ""
        If f <> Mywb Then
             str = str & vbCrLf & f
             On Error Resume Next
             Workbooks.Open Filename:=ThisWorkbook.Path & "\" & f  '打开该工作簿
             Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f & ".xlsx"   '将工作簿另存为xlsx格式的工作簿,该句代码有问题? 这里求帮助
             Workbooks(f).Save  '原工作簿保存关闭
             Workbooks(f).Close
             count = count + 1 '计数 执行几次
        End If
        f = Dir  '下一个工作簿名字
    Loop
   Application.ScreenUpdating = True
   objShell.Popup "本次共执行了" & count & "个工作簿,分别为" & str & Chr(10) & "请仔细核对!!!", 0, "温馨提示", vbInformation
   Set objShell = Nothing
End Sub
框架已经写完,关键代码不对?求帮助
最佳答案
2015-2-12 10:35
这句改成

Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f, FileFormat:=51
发表于 2015-2-12 10:35 | 显示全部楼层    本楼为最佳答案   
这句改成

Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f, FileFormat:=51

评分

参与人数 1 +3 收起 理由
天棋 + 3 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-2-12 11:02 | 显示全部楼层
回复

使用道具 举报

发表于 2015-2-12 12:01 | 显示全部楼层
天棋 发表于 2015-2-12 11:02
好像没对呢

      Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f & ".xlsx"   '将工作簿另存为xlsx格式的工作簿,该句代码有问题?
  f  应该包含 .xls    所以要只取文件名 不要扩展名
   增加 f2=split(f,".")
            Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f2(0) & ".xlsx"

评分

参与人数 1 +3 收起 理由
天棋 + 3

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-2-12 12:22 | 显示全部楼层
QLZ0602 发表于 2015-2-12 12:01
Workbooks(f).SaveAs Filename:=ThisWorkbook.Path & "\" & f & ".xlsx"   '将工作簿另存为xlsx格式 ...

是的 f是包含了后缀名字 。您这种方法可以创建,但是系统不认呢打不开。
回复

使用道具 举报

 楼主| 发表于 2015-2-12 12:25 | 显示全部楼层
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Left(f, Len(f) - 4), FileFormat:=51  综合二位老师这种可以实现 {:171:}感谢
回复

使用道具 举报

发表于 2017-9-8 14:58 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 09:04 , Processed in 0.294039 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表