excel vba如何获取所有打开的excel文件名

excel vba如何获取所有打开的excel文件名,第1张

针对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 获取文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9539284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存