Excel 2007影子副本?

时间:2010-10-03 13:20:40

标签: excel vba excel-vba excel-2007 add-in

我的问题是关于Excel加载项和VBA代码。

情况就是这样:

有2个Excel文件;一个是普通的Excel工作表,一个是带有VBA代码的.xla加载项,存储在网络驱动器上。

在普通的Excel工作表中是对.xla文件的引用,以便工作表可以使用.xla文件中的宏。这到目前为止工作正常,但有时似乎有一个错误:看起来像工作表使用某种.xla文件的“阴影副本”。 当我在VBA编辑器中更改代码或设置断点时发生错误,在运行宏时都会忽略这两个错误。感觉就像有.xla文件的旧副本,它是不可见的,并且以某种方式存储在普通的Excel文件中,因此运行的代码不是我在编辑器中看到的宏。

我认为自从我安装了MS Office 2007以来就出现了这个问题。

我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

如果Excel在本地存储加载项的版本,我不会感到惊讶。在对xla进行更改时,我一定会重新添加您的加载项以确保安装最新版本。

编辑:

您可以尝试这样做:

Private Sub Workbook_Open()

    Application.DisplayAlerts = False

    AddIns("Your Library Name").Installed = False 'To remove current link
    AddIns.Add Filename = "\\Your Server Path\Excel_Library3.xla"
    AddIns("Your Library Name").Installed = True

    Application.DisplayAlerts = True

End Sub

这样可以确保在打开Excel工作表时从您的网络位置加载最新的插件。

答案 1 :(得分:0)

我没有引用文件,而是通过代码加载插件。我的用途是将我的插件存储在我的Dropbox文件夹中,但网络也可以正常工作。

Sub LoadAddins()

Dim wbOpen As Workbook
Dim wbNew As Workbook
Dim strAddinsPath As String
Dim strExtension As String

On Error Resume Next

strAddinsPath = "\\Server\Excel\AddIns\" 'Your server path here

ChDir strAddinsPath

strExtension = Dir("*.xlam")

        Do While strExtension <> ""
            Set wbOpen = Workbooks.Open(strAddinsPath & strExtension)
            strExtension = Dir
        Loop

On Error GoTo 0

End Sub

您需要将其添加为受信任的位置,但是我可以将任何我正在处理的插件添加到文件夹中并让它们自动加载。

迭代我修改过的文件夹中的文件的代码: http://www.ozgrid.com/VBA/2007-filesearch-alternative.htm