作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设置了一些 VBA 来过滤特定类型的文件并在新工作表中返回过滤后的数据(仅显示 3 列)。我在该工作表中有两个按钮 - 一个用于简单地选择文件路径,另一个用于对该路径中的文件运行过滤器(位于单元格 F7 中)。
我的问题是我无法在不打开所选文件的情况下读取它。这很好,因为这是一个非常快速的过程,但我关闭该文件的命令只会关闭工作簿,并且会打开一个空的 Excel 窗口。我想要打开的唯一工作簿是我正在执行命令的工作簿,也是过滤结果粘贴到的工作簿。有什么建议么?我很好地想出了一种方法来关闭该窗口,或者在没有实际需要首先打开该窗口的情况下执行此过程(这将是理想的)。
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
最佳答案
您只是在代码中关闭工作簿。
oApp.Workbooks.Close
将关闭工作簿并保持窗口打开。
关闭工作簿后添加oApp.quit
关于VBA:需要关闭窗口,只能关闭工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945872/
我是一名优秀的程序员,十分优秀!