我目前正在编写一个宏,该宏将允许您选择一个文件夹,设置边界,然后遍历一些数字以读取所有特定文件类型。 (在这种情况下为Excel。)
您可以在这里看到它
Dim StringP1 As String
Dim iterator As Integer
Dim StringP2 As String
Dim i As Integer
Dim final As Integer
'number of files
final = 5
'main folder
StringP1 = " FOLDER NAME "
StringP2 = ".xls"
i = 1
While i < final
iterator = 1
FileName = StringP1 & iterator & StringP2
Call attempt1(FileName)
Call attempt2(FileName)
i = (i + 1)
iterator = (iterator + 1)
Wend
当它加载到我的潜艇中时,它会使用以下代码
Sub attempt1(FN As String)
Dim Excel As New Excel.Application
Dim FileName As String
Set XL = CreateObject("Excel.Application")
Set MyRec = CurrentDb.OpenRecordset("Infor")
Excel.Workbooks.Open (FN)
然后它经过一些代码,并最终退出该子例程。 我尝试过的一切似乎都失败了。
使用我从Stackoverflow和其他VBA站点中发现的各种信息,我已经花了几个小时弄弄了这个问题,但是似乎没有任何效果。
我尝试使用
excel.workbooks.close savechanges:=false
workbook.close
workbooks.close
.
.
.
我很好奇是否有人知道退出所有这些打开的EXCEL.EXE的好方法吗?
答案 0 :(得分:0)
如果我正确理解您正在尝试关闭所有工作簿(Excel文件)。 按名称关闭单个工作簿的正确方法:
XL.Workbooks("filename.xls").Close Savechanges:=False
如果要关闭许多工作簿,则可以使用以下循环:
Public Sub WorkWithExcel()
Dim XL As New Excel.Application, WB As Excel.Workbook
' Open Excel file:
XL.Workbooks.Open ("my_file.xls")
' Open another Excel file
XL.Workbooks.Open ("another my file.xls")
' do some work with this files
' ...
' For every file in our application:
For Each WB In XL.Workbooks
' Close file without saving changes:
WB.Close savechanges:=False
Next WB
' Close Excel applicatioin:
XL.Quit
' Clear object:
Set XL = Nothing
End Sub