VBA .ChangeLink问题

时间:2017-01-19 10:34:09

标签: excel vba excel-vba excel-2010

我面临着一个非常奇怪的VBA代码问题。我有一个excel文件,它使用Addin中的UDF。这个文件在服务器上运行,所以我真的不可能看到代码中实际发生了什么。现在,每当我在文件中(在我的本地机器上)进行任何更改时,我都会使用本地版本的插件。因此,当替换服务器上的文件时,我需要它自动更改指向服务器上的插件副本的链接。为此,我在文件中有这段代码:

Private Sub changeLinks(addinName As String, wb As Workbook)
Dim check As Long
Dim i As Long
Dim existingPath As String
Dim correctPath As String
Dim temp As Variant
Dim tempA As Variant
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
temp = getLinks(addinName, wb)
On Error Resume Next
    correctPath = Application.AddIns(addinName).fullName
    For i = 1 To 100
        If temp(i) = "" Then Exit For
        If UCase(temp(i)) <> UCase(correctPath) Then
            wb.ChangeLink temp(i), correctPath, xlLinkTypeExcelLinks
        End If
    Next
On Error GoTo 0
End Sub

Private Function getLinks(addinName As String, wb As Workbook)
Dim allLinks As Variant
Dim check As Long
Dim i As Long
Dim temp(1 To 100) As Variant
Dim linkCounts As Long
check = 0
allLinks = wb.LinkSources
linkCounts = 0
On Error Resume Next
For i = LBound(allLinks) To UBound(allLinks)
    check = InStr(1, UCase(allLinks(i)), UCase(addinName))
    If check <> 0 Then
        linkCounts = linkCounts + 1
        temp(linkCounts) = allLinks(i)
    End If
Next
On Error GoTo 0
getLinks = temp
End Function

尽管所有语句如Application.DisplayAlerts = False和On Error Resume Next,代码仍然挂在我使用.ChangeLink方法的行上。奇怪的是,如果我登录到服务器并手动运行,代码就可以正常运行。我相信这是由于代码试图运行.ChangeLink语句时出现的一些弹出窗口。我看不出这个弹出窗口是什么,因为它在服务器上以不同的登录方式运行。所以现在我只是把头撞到了墙上。

感谢任何帮助。

0 个答案:

没有答案