如何通过当前工作簿中单元格的内容来引用另一个工作簿?
我在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会发生什么情况。 你想用适当的消息框来处理这些错误,或者用户可能觉得你的程序不工作。