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 关闭前执行 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网