Excel精英培训网

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

[已解决]提取工作表名字,分别提取。

[复制链接]
发表于 2014-9-16 20:02 | 显示全部楼层 |阅读模式
本帖最后由 张雄友 于 2014-9-16 22:06 编辑

提取工作表名字,分别提取。
最佳答案
2014-9-16 20:53
提取工作表名字.rar (10.64 KB, 下载次数: 27)

提取工作表名字.rar

26.9 KB, 下载次数: 13

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-9-16 20:37 | 显示全部楼层
  1. Sub TIQI()
  2.     Dim Filename As String, mypath As String, k As Integer
  3.     Dim wb As Workbook, sh As Worksheet, brr(0 To 100, 1 To 6), thiswb
  4.     '    On Error Resume Next
  5.     '    Application.DisplayAlerts = False    '表示禁止显示提示和警告消息
  6.     '    Application.ScreenUpdating = False    '表示停止屏幕更新
  7.     thiswb = ThisWorkbook.Name
  8.     mypath = ThisWorkbook.Path & ""
  9.     Range("B4:G100").ClearContents
  10.     Filename = Dir(mypath & "*.xls")
  11.     Do
  12.         If Filename <> thiswb Then
  13.             k = k + 1
  14.             M = 0
  15.             Set wb = Workbooks.Open(mypath & Filename)
  16.             brr(M, k) = wb.Name
  17.             For Each sh In wb.Worksheets
  18.                 M = M + 1
  19.                 brr(M, k) = sh.Name
  20.             Next sh
  21.             wb.Close False
  22.         End If
  23.         Filename = Dir
  24.     Loop Until Filename = ""
  25.     Range("B4:G100") = brr
  26.     MsgBox "提取成功!"
  27.     Application.DisplayAlerts = True    '表示显示提示和警告消息
  28.     Application.ScreenUpdating = True    '表求启用屏幕更新
  29. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
张雄友 + 6 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-9-16 20:38 | 显示全部楼层
本帖最后由 zjdh 于 2014-9-16 20:41 编辑

Sub test()
    Application.DisplayAlerts = False
    Mypath = ThisWorkbook.Path
    Myfile = Dir(Mypath & "\*.xls")
    With ThisWorkbook.Sheets(1)
    .Columns("B:IV").ClearContents
    Do Until Myfile = ""
        If Myfile <> ThisWorkbook.Name Then
            Set WK = Workbooks.Open(Mypath & "\" & Myfile)
            C = .Range("IV4").End(1).Column + 1
            W = 4
            .Cells(W, C) = Myfile
            For Each SH In WK.Sheets
            W = W + 1
            .Cells(W, C) = SH.Name
            Next
            WK.Close True
        End If
        Myfile = Dir
    Loop
    End With
    Application.DisplayAlerts = True
End Sub
回复

使用道具 举报

发表于 2014-9-16 20:43 | 显示全部楼层
提取工作表名字.rar (9.91 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2014-9-16 20:44 | 显示全部楼层
wp8680 发表于 2014-9-16 20:37

mypath = ThisWorkbook.Path & "\"

能否改成选择文件夹的方式?
回复

使用道具 举报

 楼主| 发表于 2014-9-16 20:45 | 显示全部楼层
zjdh 发表于 2014-9-16 20:38
Sub test()
    Application.DisplayAlerts = False
    Mypath = ThisWorkbook.Path

mypath = ThisWorkbook.Path & "\"
能否改成选择文件夹的方式?另外代码只能执行一次,执行多次的话会不断向右生成同样的数据的。不知你发现没有?
回复

使用道具 举报

发表于 2014-9-16 20:53 | 显示全部楼层    本楼为最佳答案   
提取工作表名字.rar (10.64 KB, 下载次数: 27)
回复

使用道具 举报

发表于 2014-9-16 21:02 | 显示全部楼层
可以啊,可以改成自己选择文件夹的形式,就是在代码运行时跳出一个对话框,选择路径和对应文件夹。
代码需要改下就可以了。

评分

参与人数 1 +6 收起 理由
张雄友 + 6 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-9-16 21:05 | 显示全部楼层
zjdh 发表于 2014-9-16 20:53

            C = .Range("IV4").End(1).Column + 1
            W = 4
            .Cells(W, C) = Myfile
            For Each SH In WK.Sheets
            W = W + 1
            .Cells(W, C) = SH.Name

红色代码,能否直接用 Range 来表达?
回复

使用道具 举报

发表于 2014-9-16 21:25 | 显示全部楼层
2个变量的单元格地址,用CELLS来表达是最简洁的!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:00 , Processed in 0.505402 second(s), 23 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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