求问高手如何用Excel做一个文件夹的目录索引,需要能实时更新的?谢谢了

如题所述

第1个回答  2011-03-04
里,要设置好路径,且不要随便移动目标文件的位置
第2个回答  推荐于2016-02-11
生成“个人宏工作簿”
为了让“目录”按钮对所有工作簿都有效,我们需要将其保存在“个人宏工作簿”中。第一次使用“宏”这个功能时,需要先让软件生成一个隐藏的“个人宏工作簿”。
执行“工具→宏→录制新宏”命令(如图),按“保存在”右侧的下拉按钮,选中“个人宏工作簿”选项后,“确定”进入“宏”录制状态;不需要进行任何操作,直接单击随后展开的“宏”工具条中的“停止录制”按钮,软件会自动生成一个隐藏的“个人宏工作簿”。以后想在“个人宏工作簿”中编辑宏时,就不需要再进行此步操作了。
编辑制作“目录”宏
执行“工具→宏→VisualBasic编辑器”命令(或直接按“Alt+F11”),进入VBA编辑状态。在左侧“工程资源管理器”中,展开“VBAProject(PERSONAL.XLSB)”选项(这就是“个人宏工作簿”),双击其中的“模块1”,然后用下述代码替换右侧编辑区中的原有代码:

Subml()
OnErrorResumeNext'如果出现错误,继续运行下面的代码
zzml="选择要制作目录的文件夹"'以下代码弹出一个选择文件夹对话框
Setmlzz=CreateObject("Shell.Application").BrowseForFolder(0,zzml,&H1)
lj=mlzz.Self.Path'将选中文件夹的路径传递给变量lj
Cells(1,1)="序号"'以下代码在A1、B1、C1单元格中输入列标题文本内容
Cells(1,2)="文件名称"
Cells(1,3)="文件类型"
DimwjAsString'声明一个变量wj
wj=Dir(lj&"\*.*")'浏览上述选定文件夹中的所有文件
Do'开展一个循环
Cells(([A65536].End(xlUp).Row+1),1)=[A65536].End(xlUp).Row'从下向上判断A列有数据的行,并在其下一单元格中输入行序号作为文件序号
Cells(([C65536].End(xlUp).Row
+1),3).FormulaR1C1="=MID(RC[-
1],FIND(""."",RC[-1])+1,LEN(RC[-1])-
FIND(""."",RC[-1]))"'从下向上判断C列有数据
的行,并在其下一单元格中输入公式,用于提出
文件的扩展名,便于后续排序操作
Cells(([B65536].End(xlUp).Row+1),2).Select'从下向上判断B列有数据的行,并选中其下一单元格ActiveSheet.Hyperlinks.AddAnchor:=Selection,Address:=wj,TextToDisplay:=wj'在上述单元格中输入文件名称
wj=Dir'进入下一个循环
LoopUntilLen(wj)=0'直到文件名称字节为0(即无文件)时,终止循环
Columns("A:C").Select'以下代码将列设置为最合适列宽及水平居中格式
Columns("A:C").EntireColumn.AutoFit
WithSelection
.HorizontalAlignment=xlCenter
.VerticalAlignment=xlCenter
EndWith
Cells(1,1).Select'选中A1单元格
Application.DisplayAlerts=False'进行下面保存时直接覆盖以前的同名文档,不给出提示
ActiveWorkbook.SaveAsFilename:=lj&"\"&mlzz.Self.Name&"目录.xls"'保存目录文档
ActiveWindow.Close'关闭当前文档窗口
Application.DisplayAlerts=True'恢复覆盖文档时提示
Workbooks.Add'新建一个新的空白文档
EndSub
输入完成后,关闭VBA编辑窗口返回到Excel编辑状态。
制作目录。
启动Excel2003,执行“工具→宏→宏”命令,双击上面制作的宏,选中需要制作目录的文件夹,确定,即可制作出一个目录文件,点击文件名称,就能快速打开相应的文档进行浏览。本回答被提问者采纳