2016-12-04 121 views
0

我想用下面的代码打开一个excel工作簿,过滤一列并再次关闭它 - 保存更改。Vba打开工作簿,应用过滤器并关闭工作簿?

继承人我的代码,但由于某种原因,它不使用过滤器:

DisplayAlerts = False 
OtherBook.Open 
Selection.AutoFilter Field:=1, Criteria1:="49" 
OtherBook.Close SaveChanges:=True 

我的工作簿看起来是这样的:在他们的头

A柱和柱已经应用于B过滤器/接通。

Column A  Column B <----(Filters On) 
49   Dog 
48   Cat 
49   Dog 
47   Cat 
49   Dog 
45   Dog 

请问有人可以告诉我我要去哪里吗?

+0

Otherbook.Activate()? Application.Documents.Open(路径为字符串)? – Jbjstam

+0

你的代码是否真的与'OtherBook'语句一起工作? – user3598756

回答

0

'Selection'适用于活动工作簿,它可能有点含糊,也许尝试更精确地引用范围。改变这一行:

Selection.AutoFilter Field:=1, Criteria1:="49" 

要这样:

Workbooks(OtherBook).ActiveSheet.Cells(1, 1).AutoFilter Field:=1, Criteria1:="49" 

或者这样:

Workbooks(OtherBook).ActiveSheet.Cells(1, 1).Resize(1, 2).AutoFilter Field:=1, Criteria1:="49" 
+0

感谢您的建议。这似乎并没有工作。我的过滤器列A的标题从第6行开始,这可能是问题吗?我已将单元格(1,1)更改为单元格(6,1) - 是吗? –

+0

啊我看,是的,(6,1).. – David

+0

那么它仍然不会工作:( –