Excel VBA允许用户select已经打开的工作簿并将variables附加到选定的工作簿

使用Excel 2013 VBA,我熟悉使用以下设置工作簿variables的值:

Set oWBSource = Workbooks.Open(strFileToOpen) 'Works well. 

在我的情况下,有时工作簿已经在桌面上打开了。 我试图find一个更优雅的方式来“select”电子表格,然后将我的variables附加到该工作簿进行操作。 代码在单独的“主”电子表格上运行。

目前,我正在询问用户该文件是否已经打开。 如果是,那么:

  Dim rng As Range Set rng = Application.InputBox("Select any cell on workbook to operate on.", "Click Workbook Cell", Type:=8) 'Stops code and allows user to select a cell on an open spreadsheet Dim sTest As String 'variable used to test. sTest = ActiveCell.Value 'Testing to see what value code is seeing. sTest = ActiveWorkbook.Name 'Testing to see what value code is seeing Set oWBSource = Workbooks(ActiveWorkbook.Name) 'Works if selected Workbook is maximized and minimized. 

如果我运行上面的代码,当它运行input框时,如果我单击电子表格上的一个单元格我希望代码操作并允许代码继续,variables仍然引用代码所在的工作簿,而不是“选定“工作簿。 如果在select一个单元格的同时,我也最大化和最小化电子表格(基本上激活它),然后单击一个单元格,并允许代码继续,活动电子表格设置,它似乎工作。 我意识到单元格引用什么都不做。 但暂停允许我“激活”所需的电子表格。

我正在寻找一个更优雅的方式来处理将我的代码附加到已经打开的电子表格。 我目前的解决scheme是笨重的。 没有办法让用户select打开的电子表格,然后让我的代码在电子表格上“行动”?

我知道这是一个奇怪的问题。 请亲切评价一下吧?

如果我正确理解你正在尝试做什么,只需使用rng来parsing所选的工作簿:

 Set oWBSource = rng.Parent.Parent 

rng.Parent是工作表范围是其中的一部分,工作表的.Parent是其工作簿。