添加名称会创建“调用的对象已与其客户端断开连接”错误

时间:2015-04-23 15:46:32

标签: excel vba excel-vba

通常,但并非总是如此,当我在此工作簿中工作/开发并在新文件名下手动保存以增加版本号时,我得到 “下次运行时,下面提到的代码行中出现了”调用的对象与其客户端断开连接“错误:

Sub copy_range_names_storage_to_values(wStorage As Workbook)

Dim n As Name
For Each n In ThisWorkbook.Names

    If VBA.InStr(1, n.Name, "_FilterDatabase") = 0 Then
        If VBA.InStr(1, n.Name, "_xlfn") = 0 Then
            If VBA.InStr(1, n.Name, "Values!") <> 0 Or VBA.InStr(1, n.RefersTo, "Values!") <> 0 Then
                n.Delete
            End If
        End If
    End If
Next n

Set n = Nothing
Dim sNewRefersTo As String

For Each n In wStorage.Names

    With ThisWorkbook.Sheets("Values").Names
        If VBA.InStr(1, n.Name, "_xlfn") = 0 Then
            If VBA.InStr(1, n.RefersTo, "=" & wStorage.Sheets("Sheet1").Name & "!") > 0 Then

                sNewRefersTo = VBA.Replace(n.RefersTo, "Sheet1", "Values")
                If VBA.InStr(1, sNewRefersTo, "#REF!") = 0 Then
                    Dim rn As String
                    rn = ""
                    rn = VBA.Replace(n.Name, wStorage.Sheets("Sheet1").Name & "!", "")
                    Dim ra As String
                    ra = ""
                    ra = "=" & "Values!" & ThisWorkbook.Sheets("Values").Range(sNewRefersTo).Address
                     'ThisWorkbook.Sheets("Values").Activate
                    .Add Name:=rn, RefersTo:=ra '<--- ERROR HERE!!!
                Else
                    n.Delete
                End If
            End If
        End If
    End With
Next n

Application.StatusBar = "copy_range_names_storage_to_values: finished"
End Sub

上面子目的是删除Thisworkbook.Sheets(“Values”)中的所有范围名称,并从wStorage.Sheets(“Sheet1”)复制范围名称,并将它们添加到Thisworkbook.Sheets(“Values”) 。换句话说,我从Values中删除名称并使用Sheet1上的名称更新它们。有一些例外,我不想复制名称,我不想删除名称等(可以在If语句中看到)。

另外需要注意的是,它总是会出现一些特殊的范围名称,这恰好是工作簿中的最大范围(2000行乘1250列,28行乘1250列)。事实上它只发生在更大的范围内,这让我觉得它是一个内存问题,但如果它是一个内存问题我会期望错误更频繁/一致地发生,因为这个pc的内存使用非常一致。

这是对冲基金客户的关键任务工作手册,因此可靠性至关重要。

随着时间的推移,潜艇随着时间的推移逐渐建成了磨机。我仍在寻找一种优雅的方式来转移命名范围。

在概念上,我理解错误意味着什么:我已经以某种方式断开了工作表或工作簿的范围。但是,我该如何避免这种情况或避免错误并实现我的需要呢?

0 个答案:

没有答案