windows.visible = false防止使用命名的范围

我有一组写入数据库的用户forms(为了方便数据input)。 两个用户表单使用combobox行源的数据库命名范围:

Application.Workbooks.Open "path\TestDestination.xlsx" Me.ContactCompany.RowSource = "test.CompanyList" 

这工作正常,但打开数据库文件,即使我closures屏幕更新(?)。 进一步search,似乎application.screenupdating = false将正是我所期待的。 我将这些行改为下面的代码:

  Application.Workbooks.Open "path\TestDestination.xlsx" Me.ContactCompany.RowSource = "test.CompanyList" Windows("TestDestination.xlsx").Visible = False'(Also tried activewindow.visible = false) 

这可以隐藏工作簿,但无论出于何种原因,都会使input工作簿无法使用命名范围(test.CompanyList),并返回超出范围的错误。 我通过广泛的searchfind的唯一解决scheme表明,可能是因为它将[hidden]添加到文件名中,从而导致错误的沟通(如果我理解正确的话)。 为了避免这种情况,我打开后立即插入这一行

 ActiveWindow.Caption = TestDestination 

没有骰子。 我很抱歉,如果这是一个明显的解决scheme,或者如果我解释不好,我不知道VBA,我只是在学习,因为我去工作。 任何build议将不胜感激。 谢谢。

当你说数据库时,我认为你的意思是另一个Excel文件,而不是像Access或MySQL的东西。

参考命名的范围,这种方式工作
wrkBk.Names( “MyNamedRange”)。RefersToRange
在这个例子中,我将数字放在指定的范围内,并显示一个消息框,在隐藏源工作簿的同时给出数字的总和。

 Sub Test() Dim wrkBk As Workbook Set wrkBk = Workbooks.Open("path\TestDestination.xlsx") Windows(wrkBk.Name).Visible = False MsgBox WorksheetFunction.Sum(wrkBk.Names("MyNamedRange").RefersToRange) Windows(wrkBk.Name).Visible = True End Sub