如何通过当前工作簿中单元格的内容来引用另一个工作簿?

我在excel 2010做了一个macros,我的目标是每个人都可以使用这个macros来做自己的工作。 所以我必须使它非常灵活。

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

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

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

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

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

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

对于可以命名不同的表格,我不知道如何在macros中调整它们,而不是在每种情况下都使用VBA。

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

提前谢谢你!

亲切的问候,

亨德里克

如果要打开已closures的工作簿,则需要完整的path:

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

如果要激活已打开的工作簿,则不需要完整path,而是工作簿的名称(如“Workbook1.xlsx”)。 为此,您可以在到达“Workbook1.xlsx”之前删除path(或者,如果工作簿始终打开,请直接input工作簿的名称并跳过剩余的path):

 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简单的error handling

例如,当您尝试input不正确的名称时,testing会发生什么情况。 你想用适当的消息框来处理这些错误,或者用户可能觉得你的程序不工作。