【问题标题】:AddIn greyed background windowAddIn 灰色背景窗口
【发布时间】:2016-03-18 04:39:42
【问题描述】:

我对我发布的插件有疑问。

为了确保我可以轻松地将插件升级到所有用户,我实现了一个自我更新代码,该代码在启动时在两个单独的插件上运行。

Loader AddInWorkbook_open

上运行这个子
Private Sub Workbook_Open()
'''''''''''''''''''''''''''''''''''''''''''''''
' Workbook_Open
' Open the add-in and close this workbook
'''''''''''''''''''''''''''''''''''''''''''''''
Dim DateNetwork As Date
Dim DateLocal As Date
Const FilePath As String = "C:\Filepath\Add In"

On Error Resume Next
DateNetwork = FileDateTime(FilePath & "\PT Core.xlam")
DateLocal = FileDateTime(ThisWorkbook.Path & "\PT Core.xlam") 'Note: using on error resume next above means DateLocal will be 0 if there is no file, so it will always download the latest.
If DateNetwork > DateLocal Then
    Workbooks("PT Core.xlam").Close savechanges:=False 'Ensure the addin has not loaded already
    FileCopy FilePath & "\PT Core.xlam", ThisWorkbook.Path & "\PT Core.xlam"
End If
Workbooks.Open ThisWorkbook.Path & "\PT Core.xlam"
ThisWorkbook.Close savechanges:=False

End Sub

Main AddInWorkbook_open

运行此代码
Private XLApp As CExcelEvents

Private Sub Workbook_Open()
    Set XLApp = New CExcelEvents
End Sub

还有 CExcelEvents

Private WithEvents App As Application

Private Sub Class_Initialize()
    Set App = Excel.Application
End Sub
Private Sub App_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Application.Run "ContextMenu.AddToCellMenu", Target
End Sub

所有这些都允许我在应用程序级别捕获 right_click 事件。

当打开一个文件时,作为插件激活的加载器启动,然后启动主插件。加载程序关闭,然后文件打开。 然而,插件在启动时会创建一个灰色的 Excel 实例窗口,给人的印象是打开了两个文件。当我关闭文件时,加载项保持加载状态,我必须手动关闭应用程序。

是不是我做错了什么?我似乎无法弄清楚为什么会发生这种行为。

我已经删除了我不使用的 PERSONAL.XLSB。

感谢您的帮助。

【问题讨论】:

    标签: excel excel-addins vba


    【解决方案1】:

    我已经找到了一些关于我的问题的解释。

    我只安装了加载主加载项的加载程序加载项。它的行为就像我试图从文件资源管理器中打开我的 xlam 文件一样。

    我已经安装了 Main Add-In 以及 Loader Add-In,我将代码更改如下。

    Private Sub Workbook_Open()
    '''''''''''''''''''''''''''''''''''''''''''''''
    ' Workbook_Open
    ' Open the add-in and close this workbook
    '''''''''''''''''''''''''''''''''''''''''''''''
    Dim DateNetwork As Date
    Dim DateLocal As Date
    Const FilePath As String = "C:\Filepath\Add In"
    
    On Error Resume Next
    DateNetwork = FileDateTime(FilePath & "\PT Core.xlam")
    DateLocal = FileDateTime(ThisWorkbook.Path & "\PT Core.xlam") 'Note: using on error resume next above means DateLocal will be 0 if there is no file, so it will always download the latest.
    If DateNetwork > DateLocal Then
        Workbooks("PT Core.xlam").Close savechanges:=False 'Ensure the addin has not loaded already
        FileCopy FilePath & "\PT Core.xlam", ThisWorkbook.Path & "\PT Core.xlam"
        Workbooks.Open ThisWorkbook.Path & "\PT Core.xlam"
    End If
    
    ThisWorkbook.Close savechanges:=False
    
    End Sub
    

    当更新用户版本并且从加载程序启动主加载项时,问题仍然存在,但是一旦用户关闭并再次打开 Excel,它就会被跳过并正常工作。

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2020-04-11
      • 2010-12-03
      • 2012-02-05
      相关资源
      最近更新 更多