ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3318|回复: 13

工作簿合并问题-已解决

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-9-1 09:51 | 显示全部楼层 |阅读模式

问题如下:

2008-08为名的文件夹内有31个工作簿,取名分别为“每日通话记录81”到“每日通话记录831”,想要把此文件夹内的所有工作簿内的Sheet1分别复制到一个工作簿内,而这个新的工作簿内有名字分别为“8-1”到“8-31”的31个工作表。

麻烦各位高手赐教宏代码,不胜感激!

[此贴子已经被作者于2008-9-1 16:28:56编辑过]

TA的精华主题

TA的得分主题

发表于 2008-9-1 10:24 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-9-1 11:39 | 显示全部楼层

谢谢LangQueS,不过有个问题,运行完以后原来的工作簿都是打开状态,没有自动关闭,另外,是否有办法让复制后的工作表的名字和原来工作簿的名字相同呢?谢谢

Sub 合并工作簿()
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
      MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets(1).Copy After:=ThisWorkbook.Sheets _
          (ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

TA的精华主题

TA的得分主题

发表于 2008-9-1 13:22 | 显示全部楼层
建议给参考帖代码作者发个论坛短信求助。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-9-1 14:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-9-1 15:13 | 显示全部楼层

用你的代码修改一下:

Sub 合并工作簿()
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
      MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x <= UBound(FilesToOpen)
        Set wb = Workbooks.Open(Filename:=FilesToOpen(x))
        With wb
            .Sheets(1).Copy after:=ThisWorkbook.Sheets _
                (ThisWorkbook.Sheets.Count)
            ActiveSheet.Name = Replace(wb.Name, ".xls", "")  '工作表命名
            .Close False  '不保存关闭工作簿
        End With
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-9-1 15:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
瞧,高手如云吧,嘿嘿,谢谢哦,大家帮了我好多忙了

TA的精华主题

TA的得分主题

发表于 2008-9-2 15:03 | 显示全部楼层
能够将路径默认为当前工作簿的相同的文件夹吗?如果能这样,将操作变为更便捷。
[此贴子已经被作者于2008-9-2 15:07:43编辑过]

TA的精华主题

TA的得分主题

发表于 2008-9-6 15:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-9-24 14:35 | 显示全部楼层
如果我只要 值和数字格式 代码该如何添加
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-27 16:44 , Processed in 0.059252 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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