Excel精英培训网

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

[已解决]批量在若干工作簿中插入指定名称的工作表

[复制链接]
发表于 2022-12-23 11:36 | 显示全部楼层 |阅读模式
本帖最后由 心灵有约 于 2022-12-23 15:12 编辑

批量在若干工作簿中插入指定名称的工作表.zip (24.83 KB, 下载次数: 3)
发表于 2022-12-23 13:45 | 显示全部楼层
没有附件,纯瞎玩
Sub test1()
    Dim mypath$, lj$
    mypath = "输入文件路径地址"
    lj = Dir(mypath)
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Do
        Workbooks.Open mypath & lj
        Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "打印表"
        ActiveWorkbook.Close True
        lj = Dir
    Loop Until lj = ""
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

 楼主| 发表于 2022-12-23 15:23 | 显示全部楼层
本帖最后由 心灵有约 于 2022-12-23 15:27 编辑
哥儿- 发表于 2022-12-23 13:45
没有附件,纯瞎玩
Sub test1()
    Dim mypath$, lj$

补附件了。能否做在附件上?我试了一下,工作簿在一个文件夹中,将该文件夹的地址复制到语句中,运行出错,不知何故?谢谢
回复

使用道具 举报

发表于 2022-12-23 16:10 | 显示全部楼层    本楼为最佳答案   
心灵有约 发表于 2022-12-23 15:23
补附件了。能否做在附件上?我试了一下,工作簿在一个文件夹中,将该文件夹的地址复制到语句中,运行出错 ...

路径应该少了斜杠吧原因吧。mypath="D:\批量在若干工作簿中插入指定名称的工作表\批量在若干工作簿中插入指定名称的工作表\原工作簿\"
回复

使用道具 举报

 楼主| 发表于 2022-12-28 17:57 | 显示全部楼层
哥儿- 发表于 2022-12-23 16:10
路径应该少了斜杠吧原因吧。mypath="D:\批量在若干工作簿中插入指定名称的工作表\批量在若干工作簿中插入 ...

再麻烦一下,现在批量插入指定的工作表“打印表”时,如果有的工作簿中已有“打印表”工作表,则还是会插入一张sheet2表(已有sheet1及打印表)。我想问下,怎样不再插入工作表?(已有“打印表”的前提下),也就是说如果工作簿中已有“打印表”,则不执行插入工作表动作。
回复

使用道具 举报

 楼主| 发表于 2022-12-28 17:57 | 显示全部楼层
哥儿- 发表于 2022-12-23 16:10
路径应该少了斜杠吧原因吧。mypath="D:\批量在若干工作簿中插入指定名称的工作表\批量在若干工作簿中插入 ...

再麻烦一下,现在批量插入指定的工作表“打印表”时,如果有的工作簿中已有“打印表”工作表,则还是会插入一张sheet2表(已有sheet1及打印表)。我想问下,怎样不再插入工作表?(已有“打印表”的前提下),也就是说如果工作簿中已有“打印表”,则不执行插入工作表动作?
回复

使用道具 举报

 楼主| 发表于 2022-12-28 17:59 | 显示全部楼层
哥儿- 发表于 2022-12-23 16:10
路径应该少了斜杠吧原因吧。mypath="D:\批量在若干工作簿中插入指定名称的工作表\批量在若干工作簿中插入 ...

再麻烦一下,现在批量插入指定的工作表“打印表”时,如果有的工作簿中已有“打印表”工作表,则还是会插入一张sheet2表(已有sheet1及打印表)。我想问下,怎样不再插入工作表?(已有“打印表”的前提下),也就是说如果工作簿中已有“打印表”,则不执行插入工作表动作?
回复

使用道具 举报

发表于 2023-1-2 16:38 | 显示全部楼层
心灵有约 发表于 2022-12-28 17:59
再麻烦一下,现在批量插入指定的工作表“打印表”时,如果有的工作簿中已有“打印表”工作表,则还是会插 ...

打开工作簿循环判断一下是否已经存在打印工作表。或者打开的时候直接删除打印表,再统一添加也行。
Sub test1()
    Dim mypath$, lj$, sht As Worksheet, n
    mypath = "D:\批量在若干工作簿中插入指定名称的工作表\批量在若干工作簿中插入指定名称的工作表\原工作簿\"
    lj = Dir(mypath)
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Do
        Workbooks.Open mypath & lj
        For Each sht In Sheets
            If sht.Name = "打印表" Then n = 1
        Next sht
        If n <> 1 Then Worksheets.Add(after:=Sheets(Sheets.Count)).Name = "打印表"
        ActiveWorkbook.Close True
        lj = Dir
        n = 0
    Loop Until lj = ""
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 12:25 , Processed in 0.337849 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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