【发布时间】:2017-11-22 19:30:46
【问题描述】:
我有一个关于 VBA 中工作簿的正确地址的问题,我对此很陌生。
这是我到目前为止所做的:
我写了一个子程序,除其他外,它创建了一个代号为“table10”的工作表。
然后我定义了一个函数来操作所述工作表的内容:这个函数
Text_To_Numbers(worksheet as worksheet)
需要一个工作表参数。我使用以下行从另一个子调用该函数:
Call Text_To_Numbers(table10)
现在,这是我的问题:
当唯一打开的工作簿是我想用我的函数操作的工作簿时,上述工作完美无缺。但是,当我有多个打开的工作簿时,该函数会尝试操作不同的工作簿,从而导致错误。
我很确定一定有一种方法可以指定要使用的工作簿,但我找不到它。话虽如此,还有一个复杂的问题:我要操作的工作簿的名称是机器生成的,所以它总是有不同的名称。这意味着不能一次又一次地使用对同一文件名的显式引用。
谁能帮我解决这个问题?
【问题讨论】:
-
将
ThisWorkbook用于运行宏的工作簿,例如ThisWorkbook.table10或ThisWorkbook.Worksheets("Table10"),或将Application.Workbooks("WorkBookName.xlsm").Worksheets("Table10")用于任何其他工作簿。 -
另外,您可以声明一个工作簿变量
Dim wb as Workbook,然后使用它:Set wb = Workbooks.Open("Somepath\Somefile.xlsx")打开一个,然后wb.Worksheets(1)引用该工作簿中的第一个工作表。 -
除非您设置了对其他工作簿项目的引用,否则
table10将始终使用代码引用工作簿中的工作表(如果它是代号)。