VBA集合=不同工作簿上的工作表

VBA集合=不同工作簿上的工作表,vba,excel,Vba,Excel,我为这件事发疯了。我正在尝试筛选工作表“Detail Aging(2)”上的第一列,但筛选值会随时间而变化,我以后不需要修改宏 我曾想过使用范围从不同工作簿中的工作表中提取筛选值,但无法引用该工作簿中的工作表。我得到“下标超出范围” 下面是我正在使用的一段代码。当具有该范围的工作表位于同一工作簿上时,它工作正常 Dim vCrit As Variant Dim wsO As Worksheet Dim wsL As Worksheet Dim rngCrit As Range Dim rngOr

我为这件事发疯了。我正在尝试筛选工作表“Detail Aging(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")
任何建议都将不胜感激

使用工作簿对象

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")

首先设置另一个工作簿,然后设置sheet=otherworkbook.sheetYou想举个例子吗?我尝试将Dim wb用作工作簿,然后设置工作簿,但它会引发相同的错误。我尝试关闭工作簿,因为它有写保护,并会提示输入密码。是否可以将其设置为只读打开?如果设置为只读,宏将无法继续,因为“Collectible Blank”现在是活动工作簿,并且set wsO=工作表(“详细信息老化(2)”)无法完成。可以在文件路径和名称后添加,只读:=True。见上面的变化。但不确定这是否会阻止密码请求。至于设置wsO问题。设置wb=。。设置wsO之后。请参阅上面的编辑。如果它是目录中唯一的文件,您可以查看其中的文件。或者你可以用这样的东西。所以用户可以浏览它。你真的在这一次救了我!你的解决方案做得很好。非常感谢。很高兴能帮助你。继续编码。