如何通过当前工作簿中的单元格内容引用其他工作簿?

时间:2016-07-26 17:10:09

标签: excel excel-vba variables reference vba

我正在excel 2010制作一个宏,我的目标是每个人都可以将这个宏用于自己的工作。因此,我必须使其非常灵活。

每个人都命名他们自己的工作簿(我已经通过使用ThisWorkbook在宏中解决了这个问题),但是每个人都会命名他们自己的提取文件(新数据来自哪里)。

但是,几乎没有人知道如何使用VBA,所以每次都无法在代码中调整此引用。

因此,我添加了一个新表:'个性化'

在此处,此人可以在特定单元格中添加提取文件的名称。

不幸的是我不知道如何打开当前工作簿中具有特定单元名称的工作簿。

我试过,例如,Windows("ThisWorkbook.Sheets("Personalize").Range("B3")").Activate,但它没有用。

对于可以不同命名的工作表同样的事情,我不知道如何在不使用VBA的情况下在宏中调整它们。

有没有人有任何想法或建议?

提前非常感谢你!

亲切的问候,

亨德里克

1 个答案:

答案 0 :(得分:0)

如果要打开已关闭的工作簿,则需要完整路径:

dim wkb as workbook
dim wbPath as String

wbPath  = ThisWorkbook.Sheets("Personalize").Range("B3").value
Set wkb = Workbooks.Open(wbPath )

如果要激活已打开的工作簿,则不需要完整路径,而是工作簿的名称(例如" Workbook1.xlsx") 。为此,您可以在到达" Workbook1.xlsx"之前剃掉路径。 (或者,如果工作簿总是首先打开,只需让他们直接输入工作簿的名称并跳过剩下的路径):

dim wbname as String

wbname = ThisWorkbook.Sheets("Personalize").Range("B3").value
Do until Instr(wbname, "\") = 0
     wbname = Mid(wbname, instr(wbname, "\") + 1) 'I didn't test this, just going off the top of my head
Loop

Workbooks(wbName).Activate

务必妥善处理错误。供参考:VBA Excel simple Error Handling

测试当您尝试输入不正确的名称时会发生什么。您希望使用适当的消息框处理这些错误,或者用户可能觉得您的程序无法正常工作。