excel vba如何获取所有打开的excel文件名 VBA中如何打开一个文件夹内的所有EXCEL文件?
\u5728\u7ebf\u7b49\uff0cexcel vba\u5982\u4f55\u83b7\u53d6\u6253\u5f00\u7684\u8868\u683c\u7684\u6587\u4ef6\u540d\u79f0\u7684\u95ee\u9898\u5176\u5b9e\u7528 Dir() \u5373\u53ef\u76f4\u63a5\u53d6\u5f97\u4e0d\u5305\u542b\u8def\u5f84\u7684\u6587\u4ef6\u540d\uff1aSub GetFilNam()
Dim FilNam
FilNam = Dir(Application.GetOpenFilename("Excel\u6587\u4ef6(*.xls),*.xls"))
If FilNam = False Then Exit Sub '\u5982\u679c\u5355\u51fb\u201c\u53d6\u6d88\u201d\u5219\u76f4\u63a5\u9000\u51fa\u7a0b\u5e8f\uff0c\u4ee5\u514d\u8fd4\u56de\u201cFalse\u201d\u5f39\u7a97
MsgBox FilNam
End Sub \u5982\u679c\u4e0d\u8003\u8651\u5355\u51fb\u201c\u53d6\u6d88\u201d\u4f1a\u8fd4\u56de\u201cFalse\u201d\u7684\u95ee\u9898\uff0c\u90a3\u4e48\u76f4\u63a5\u8fd9\u6837\u66f4\u52a0\u7b80\u6d01\uff1aSub GetFilNam()
MsgBox Dir(Application.GetOpenFilename("Excel\u6587\u4ef6(*.xls),*.xls"))
End Sub
\u6ce8\u610f c:\a \u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u4e0d\u8981\u592a\u591a,\u514d\u5f97\u6b7b\u673a
Sub \u6253\u5f00excel\u8868\u683c()
Dim myPath$, myFile$, AK As Workbook
Application.ScreenUpdating = False '\u51bb\u7ed3\u5c4f\u5e55\uff0c\u4ee5\u9632\u5c4f\u5e55\u6296\u52a8
myPath = "c:\a\" '\u628a\u6587\u4ef6\u8def\u5f84\u5b9a\u4e49\u7ed9\u53d8\u91cf
myFile = Dir(myPath & "*.xls") '\u4f9d\u6b21\u627e\u5bfb\u6307\u5b9a\u8def\u5f84\u4e2d\u7684*.xls\u6587\u4ef6
Do While myFile "" '\u5f53\u6307\u5b9a\u8def\u5f84\u4e2d\u6709\u6587\u4ef6\u65f6\u8fdb\u884c\u5faa\u73af
If myFile ThisWorkbook.Name Then
Set AK = Workbooks.Open(myPath & myFile) '\u6253\u5f00\u7b26\u5408\u8981\u6c42\u7684\u6587\u4ef6
End If
myFile = Dir '\u627e\u5bfb\u4e0b\u4e00\u4e2a*.xls\u6587\u4ef6
Loop
Application.ScreenUpdating = True '\u51bb\u7ed3\u5c4f\u5e55,\u6b64\u7c7b\u8bed\u53e5\u4e00\u822c\u6210\u5bf9\u4f7f\u7528
End Sub
针对ThisWorkbook对象的BeforeClose事件添加如下代码
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim fileStr As String
fileStr = "$111.xls$333.xls$“ ‘头尾都用$分隔,循环判断文件名
For I = Workbooks.count To 1 Step -1
If InStr(fileStr, Workbooks(I).Name) <> 0 Then
Workbooks(I).Close False ‘False是不保存关闭 true是保存并关闭
End If
Next
End Sub
关闭时就会遍历所有打开的excel文件,执行不保存操作,并关闭
for i=1 to workbooks.count
cells(i,1)=workbooks(i).name
next
以上循环将已打开的EXCEL的文件名记录在工作表的A列
扩展阅读:vba编程必背50个程序 ... excel vba 多条件查询 ... excel vba编程教程完整版 ... vba编程从入门到精通教程 ... excel vba定位到某行末尾 ... excel vba获取单元格的值 ... vba如何清除单元格格式 ... excel vba编程入门教程 ... excel vba 关闭前执行 ...