针对ThisWorkbook对象的BeforeClose事件添加如下代码
Private Sub Workbook_BeforeClose(Cancel As Boolean)Dim fileStr As String
fileStr = "$111xls$333xls$“ ‘头尾都用$分隔,循环判断文件名
For I = Workbookscount To 1 Step -1
If InStr(fileStr, Workbooks(I)Name) <> 0 Then
Workbooks(I)Close False ‘False是不保存关闭 true是保存并关闭
End If
Next
End Sub
关闭时就会遍历所有打开的excel文件,执行不保存 *** 作,并关闭
使用CELL函数,此函数是EXCEL中的信息函数,返回有关单元格的格式、位置或内容的信息。使用方法为:
1、CELL函数有两个参数,CELL(info_type, [reference]),第一个参数指定要返回的单元格信息的类型,第二个参数,需要其相关信息的单元格。当输入或选择此函数时,后跟第一参数的选择。
2、选择“filename”,包含引用的文件名(包括全部路径),文本类型。但当输入公式:=CELL("filename")后,发现返回的结果是空值。这是因为引用的工作表尚未保存,则返回空文本 ("")。
3、将工作簿保存,关闭重新打开,或者在任意单元格输入内容,再或者按F9功能键刷新下,都将会看到工作表名。
4、有时,需要对同一工作簿的多个工作表各自提取出自己的表名,以便进一步引用,可以按Ctrl加选,选择多个工作表,再输入公式。
5、此处提取的是工作表名,原则上引用哪个单元格都一样,都将返回所在的表名,但A1是左上角第一个,比较简单好写:=CELL("filename",A1)。
Function 列表名(a As String)
f = Dir("D:\陈杭荣\VBA\xlsm")
Do While f <> ""
k = k + 1
If k = a Then 列表名 = f
f = Dir
Loop
End Function
批量提取文件名的方法,请按下面的步骤 *** 作
使用的工具:优速文件名提取器
步骤1,打开电脑后再打开已经安装好的工具“优速文件名提取器”软件,点击界面左边的“文件名”图标,然后再点击添加文件蓝色按键,将需要提取名称的文件全部导入到软件中。
步骤2,设置导出名称,如果不设置的话就使用默认的名称,导出格式选择“xlsx”,这是excel文件格式;最后选择文件名中是否包含后缀。最后设置输出目录,用来保存导出来的excel文件。
步骤3,完成所有设置后,点击右上角的开始提取按键启动软件,提取完成后软件会自动打开输出文件夹,包含所有文件名的excel导出文件就保存在这里。
步骤4,我们从案例的结果可以看到,所有的文件名一次性全部提取到了excel表格的第一列,文件名提取成功。
这个建议使用vba实现
按组合键alt+f11打开vbe编辑窗口
然后插入模块,
输入代码:
Sub aaa()MsgBox ActiveWorkbookName
End Sub
运行vba代码即d出窗体,返回楼主需求的文件名
<php
////////////////////////////////// BEGIN SETUP
$filename ="document_namexls";
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='$filename);
////////////////////////////////// END SETUP
////////////////////////////////// BEGIN GATHER
// Your MySQL queries, fopens, et cetera go here
// Cells are delimited by \t
// \n is just like you might expect; new line/row below
// EG:
$stuff="PART\tQTY\tVALUE\t\n";
$stuff=$stuff"01-001-0001\t37\t2876\t\n";
$stuff=$stuff"01-001-0002\t6\t34706\t\n";
$stuff=$stuff"01-001-0003\t12\t711\t\n";
////////////////////////////////// END GATHER
// The point is to get all of your data into one string and then:
////////////////////////////////// BEGIN DUMP
echo $stuff;
////////////////////////////////// END DUMP
>
是指的一个工作簿中的三个不同工作表吧,不管当前活动工作表是哪个,始终保持提取出各自的工作表名,而不是提取出的活动工作表名么?
公式改为:=CELL("filename",A1)
方法/步骤
首先介绍如何调用工作表的文件名,然后再介绍在工作表全名中截取工作薄名;
在A2单元格中输入我们的公式:
=CELL("filename")
即可得到整个工作路径的全文件名;
我们可以在全文件名中看到“[”与“]”符号中间的是单个文件名,那么我们现在对这个文件名进行字符提取,公式如下:
=MID(LEFT(CELL("filename"),FIND("]",CELL("filename"))-1),FIND("[",CELL("filename"))+1,LEN(CELL("filename")))
提取单个文件名公式的思路:
找到“[”与“]”符号对应的位置及中间字符串的长度,然后从“]”开始向左获取该长度的字符串,即为文件名了。
接下来介绍如何获取工作薄名,思路跟上条的获取文件名的类似:
找到“]”符号所在的位置,从下一个数据开始到255个字符位之间的所有字符串即是工作薄名了,当然我想文件名再长也不会长过255个字符吧,如果真是的,那就将255换成500或者更大的数字就行了。
定义名称工作薄名其公式如下:
=MID(CELL("filename",!A1),FIND("]",CELL("filename"))+1,255)
下面我们来验证下公式的效果:我将工作薄的名称反复更改,在A1单元格中的显示内容也会自动更改。。。
以上就是关于excel vba如何获取所有打开的excel文件名全部的内容,包括:excel vba如何获取所有打开的excel文件名、excel怎么去提取工作表名称什么函数可以实现、EXCEL 获取文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)