VBA Set = 工作簿不同的工作表

4
我对这个问题感到非常困惑。我正在尝试过滤“详细老化(2)”工作表上的第一列,但是筛选值会随着时间的推移而变化,并且未来不得修改宏。我考虑从另一个工作簿的工作表中使用范围提取筛选器值,但是我无法引用该工作簿中的工作表,会出现“下标超出范围”的错误。以下是我正在使用的代码片段。当具有范围的工作表在同一工作簿上时,它可以正常工作。
Dim vCrit As Variant
Dim wsO As Worksheet
Dim wsL As Worksheet
Dim rngCrit As Range
Dim rngOrders As Range
Set wsO = Worksheets("Detail Aging (2)")
Set wsL = Worksheets("C:\Users\lm733600\Desktop\Fabrizio\[Collectible Blank.xlsm]Collectors")
Set rngOrders = wsO.Range("$A$1").CurrentRegion
Set rngCrit = wsL.Range("ColRange")

任何建议都将不胜感激!

1
首先设置另一个工作簿,然后将工作表设置为otherworkbook.sheetyouwant。 - findwindow
你有一个例子吗?我尝试使用Dim wb As Workbook并设置工作簿,但它仍然抛出相同的错误。 - Fabrizio Martinez
1个回答

3

使用工作簿对象

Dim vCrit As Variant
Dim wsO As Worksheet
Dim wsL As Worksheet
Dim rngCrit As Range
Dim rngOrders As Range
Set wsO = Worksheets("Detail Aging (2)")

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\Users\lm733600\Desktop\Fabrizio\Collectible Blank.xlsm", ReadOnly:=True)

set wsL = wb.Sheets("Sheet1")

Set rngOrders = wsO.Range("$A$1").CurrentRegion
Set rngCrit = wsL.Range("ColRange")

我试图保持工作簿关闭,因为它是写保护的并且会提示输入密码。它可以设置为只读吗?如果设置为只读,宏将无法继续,因为“Collectible Blank”现在是活动工作簿,并且 Set wsO = Worksheets("Detail Aging (2)") 未能完成。 - Fabrizio Martinez
是的,您可以在文件路径和名称后添加ReadOnly:= True。请参见上面的更改。不确定是否会防止密码请求。至于设置wsO问题。在设置wsO之后设置wb = .. 请参见上面的编辑。 - MatthewD
1
如果它是目录中唯一的文件,您可以查看其中的文件。或者您可以使用类似于此的东西。http://analysistabs.com/vba/open-file-dialogbox-excel-macros-example-code/,以便用户可以浏览它。 - MatthewD
你真的帮了我大忙!你的解决方案完美地解决了这个问题。非常感谢你。 - Fabrizio Martinez
很高兴能帮助你。继续编码吧。 - MatthewD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接