VBA:需要closures窗口,只能closures工作簿

我已经设置了一些VBA来过滤特定types的文件,并在新的工作表中返回过滤的数据(只显示3列)。 我在该工作表中有两个button – 一个简单地select文件path,另一个在该path(在单元格F7中)的文件上运行filter。

我的问题是,我没有能够读取选定的文件,而无需打开它。 这很好,因为这是一个非常快速的过程,但是closures该文件的命令只closures工作簿,并且打开一个空的Excel窗口。 我想打开的唯一工作簿是执行命令的地方,也是过滤结果粘贴到的地方。 有什么build议么? 我很好,想办法让窗口closures,或者在没有窗口的情况下执行这个过程,而这实际上并不需要打开(这将是理想的)。

Public Sub CommandButton2_Click() b = Application.GetOpenFilename() If b = False Then MsgBox (" You have not selected a file!") Else ThisWorkbook.Worksheets("SelectUpdateFile").Cells(7, 6).Value = b MsgBox ("Your file has been selected. Click the Filter button below to generate MOVED nodes.") End If End Sub Sub AutoFilter() Dim s As String Dim oApp As Object Dim wb As Object Dim ws As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next Set wb = oApp.Workbooks.Open(Filename:=Cells(7, 6)) On Error GoTo 0 If Not wb Is Nothing Then 'specify worksheet name Set ws = wb.Worksheets(1) s = "AB" With ws 'disable all previous filters .AutoFilterMode = False 'apply new filter .Range("$A$2:$K$100000").AutoFilter Field:=1, Criteria1:="=*MOVE*", _ Operator:=xlAnd .Range("$A$2:$K$100000").AutoFilter Field:=7, Criteria1:="=*%3e*", _ Operator:=xlAnd 'Copy .Range("a2:a100000").Copy Sheets("MovedNodes").Range("a1").PasteSpecial xlPasteValues .Range("b2:b100000").Copy Sheets("MovedNodes").Range("b1").PasteSpecial xlPasteValues .Range("g2:g100000").Copy Sheets("MovedNodes").Range("c1").PasteSpecial xlPasteValues 'Paste to Sheet2 End With End If oApp.DisplayAlerts = False oApp.Workbooks.Close MsgBox ("Done! Click OK to view the moved nodes.") Application.ScreenUpdating = True Sheets("MovedNodes").Select End Sub 

您只能在代码中closures工作簿。

 oApp.Workbooks.Close 

将closures工作簿,并打开窗口。

closures工作簿后添加oApp.quit