VBA代码未“保留”此工作表参数


0

我想从另一工作簿中检索值的一列,并在当前工作簿中填充一个选项卡。最终,这将进入我编写的效果更好的更长的模块。我只是想让这一步自动化。下面是代码。

我得到一个标超出范围在贴线错误。似乎我的语句设置currentWbThisWorkbook不起作用,因为要从中复制的第二个工作簿仍处于打开状态,选择并复制了范围,只是在等待目标粘贴。我已经搜索并尝试了所有我能想到的。

Sub OpenWorkbookToPullData()

Dim sUserInput As String
    sUserInput = InputBox("Enter Account Folder Name:", "Folder Name")

Dim path As String
    path = "C:\users\" & Environ$("username") & "\OneDrive\Documents\Brightree\" & sUserInput & "\Financial Scorecard\Exceptions.xlsm"

Dim currentWb As Workbook
    Set currentWb = ThisWorkbook

Dim exceptionWb As Workbook
    Set exceptionWb = Workbooks.Open(path)

Dim exceptionWs As Worksheet
    Set exceptionWs = exceptionWb.Sheets("Exceptions")

Dim rng_data As Range
    Set rng_data = exceptionWs.Range("A1:A20")

 rng_data.Copy
 currentWb.Sheets("Exception").Range("A1").PasteSpecial xlPasteValues

exceptionWb.Close (False)

End Sub

您是否已逐步完成(F8),以确保所有变量均已正确定义?您的错误表明您引用的是不存在的内容。由于您正确打开了第二个wb并复制了范围,因此这表明问题出在currentWB中,因为exceptionwb.close无法执行。
Raystafarian 2015年

我知道,如果我跳过该行,则执行close命令并关闭exceptionWb。我与您同在-我相信它与currentWB变量有关-几乎就像它忘记了已将其设置为ThisWorkbook一样。但是,逐步执行,我可以看到每个变量的值是什么吗?就像我在VBA中所做的一样,我还没有这样做!谢谢!!
LeAnn Smith Scott

只需将变量悬停在变量上,它就会告诉您它的值
Raystafarian 2015年

Answers:


1

您必须确保两个工作簿中存在Sheets(“ Exceptions”)。正如Twisty指出的;检查工作表名称的拼写。


2
换句话说,@ LeAnn Smith Scott,您的代码在源工作簿中引用了名称Exception,但在目标工作簿中引用了名称(无尾随ExceptionS)。
Twisty模仿者

实际上,每个工作簿中都有所不同-现在就尝试-非常感谢!我会更新!
LeAnn Smith Scott

好吧,我对单词Exception的所有引用都是单数-仍然出现错误。我什至以为也许是因为我的第一个工作簿没有保存为启用宏的工作簿,所以尝试起来也没有运气。
LeAnn Smith Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.