ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何提取工作簿的名称

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-10-2 23:13 | 显示全部楼层 |阅读模式
如何将文件夹5里面的所有文件的文件名提取到B列

文件夹5.rar

83.02 KB, 下载次数: 421

TA的精华主题

TA的得分主题

发表于 2009-10-2 23:59 | 显示全部楼层
  1. Private Sub CommandButton1_Click()
  2.     Dim myPath, myName
  3.     myPath = ThisWorkbook.Path & "\*.xls"
  4.     myName = Dir(myPath)
  5.     Do While myName <> ""
  6.         Sheet1.[b65536].End(xlUp).Offset(1, 0) = myName
  7. ’        如果不需要当前工作簿名称,改用下面的这个代码
  8. ‘        If myName <> ThisWorkbook.Name Then Sheet1.[b65536].End(xlUp).Offset(1, 0) = myName
  9.         myName = Dir()
  10.     Loop
  11. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2009-10-3 00:09 | 显示全部楼层
不包含本工作簿名,请测试:
Sub Macro1()
    Dim arr(), myPath$, myFile$, m As Integer
    Application.ScreenUpdating = False
    myPath = ThisWorkbook.Path & "\"
    myFile = Dir(myPath & "*.xls")
    Do While myFile <> ""
        If myFile <> ThisWorkbook.Name Then
            m = m + 1
            ReDim Preserve arr(1 To 2, 1 To m)
            arr(1, m) = m
            arr(2, m) = Split(myFile, ".")(0)
        End If
        myFile = Dir
    Loop
    ActiveSheet.UsedRange.Offset(1, 0).ClearContents
    [a2].Resize(m, 2) = WorksheetFunction.Transpose(arr)
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2009-10-3 07:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 2楼 taller 的帖子

2楼 taller  先生,您好!
    能告诉怎样使用吗?把代码放在工作表的代码区,然后重新启动工作薄,不见效果,为什么?如果能改写成一打开“工作薄。xls”就能见到效果不是更好吗?请赐教。

TA的精华主题

TA的得分主题

发表于 2009-10-3 08:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-10-3 09:16 | 显示全部楼层
2、3楼的方法都可以,需设置一个按钮激活宏
2楼的代码不小心激活宏会重复提取
3楼好,且有序号

TA的精华主题

TA的得分主题

发表于 2009-10-3 09:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 3楼 zhaogang1960 的帖子

3楼 zhaogang1960  先生,您好!
    您在凌晨还在为新手们解答问题,深为感动,我们这些新手由衷地谢谢您,并祝您中秋快乐!
    您在 3 楼写的代码我把它放到工作表的Open事件中,很好,如附件“文件夹”的“02”,这也是我长期以来想解决而没有答案的问题,谢谢您的帮助。
    但是,您在 3 楼的代码还不能完全解决我的问题,请大侠在您 3 楼代码的基础上添加几句代码,帮助我了却如下的愿望:
    1.  打开工作薄,文件夹中的工作薄就自动在“工作薄登记”的“02”中形成目录(您在3楼的代码已经实现);
    2.  “工作薄登记”的“02”中的工作薄名称自动生成“超链接”,即,只要点击目录中某工作薄名称,这个工作薄就会自动打开。这一点要求请大侠帮忙实现,谢谢您。
    大侠实现后,请在附件中测试,并将成功的附件回传,如何,谢谢您!
    祝 zhaogang1960 先生中秋快乐,全家幸福安康!

文件夹.rar

96.3 KB, 下载次数: 268

TA的精华主题

TA的得分主题

发表于 2009-10-3 09:37 | 显示全部楼层
原帖由 szqhb 于 2009-10-3 09:16 发表
2、3楼的方法都可以,需设置一个按钮激活宏
2楼的代码不小心激活宏会重复提取
3楼好,且有序号


能否仔细说说为什么2楼代码会重复提取吗?

TA的精华主题

TA的得分主题

发表于 2009-10-3 10:40 | 显示全部楼层

回复 7楼 高玉甫 的帖子

请测试:
Private Sub Workbook_Open()
    Dim myPath$, myFile$, m As Integer
    Application.ScreenUpdating = False
    myPath = ThisWorkbook.Path & "\"
    myFile = Dir(myPath & "*.xls")
    m = 1
    With Sheets("02")
        .UsedRange.Offset(1, 0).Clear
        Do While myFile <> ""
            If myFile <> ThisWorkbook.Name Then
                m = m + 1
                .Hyperlinks.Add Anchor:=.Cells(m, 2), Address:=myPath & myFile, TextToDisplay:=Split(myFile, ".")(0)
            End If
            myFile = Dir
        Loop
        .Range("A2").Value = 1
        If m > 2 Then .Range("A2").AutoFill Destination:=.Range("A2").Resize(m - 1), Type:=xlFillSeries
    End With
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-3 11:31 | 显示全部楼层
哇高手都来   光临过啦   太棒了   
有人说2楼的代码有重复   我看了下 提出问题的朋友 是这样认为的:   第一次执行命令时非常成功  ,第二次执行命令时会在原复制好的名称下面重新再复制一遍,
即点N次就会出现同一工作表名有N个
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 07:24 , Processed in 0.038240 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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