动态设置对象库引用?

所以我最初有一个2002-2003格式的MS Access应用程序。在生产网络图像上开发,当图像推动办公室升级时,它成为了Office 2007.所以这是以非常传统的方式使用...代表在公司笔记本电脑上随身携带输入数据,并自动化复杂的ppt演示文稿,以及他们的excel工作表(他们喜欢它......他们需要它)。数据不像数据库存储库那样保存,只需要足够长的时间来生成他们需要的自动化,并且它可以工作....节省时间。因此访问是有限的,并且在用例中,因为我以某种方式使用它确实有限,因此它当然不打算使用。我明白了,但就像我说到目前为止,它工作得很好..... 我遇到的一个问题是,如果有人因为某种原因不得不使用另一台计算机(不经常发生,但它让我思考),并说他们有2002-2003版本的访问权限,该工具将运行,但一次我们到了ppt&的代码例程/模块outlook,对象库显示MISSING,因为使用这个工具似乎会自动导致库升级到下一个可用的版本,但是找不到版本..... 所以最初当我做这个....它使用了MS PowerPoint 11.0和MS Outlook 11.0,然后当我不得不在2007年开始工作时它们两者都成了12.0,有些情况下我看到它升到了14.0,没有一个ups是一个问题,但是现在因为我有一个Office 2007的图像,我尝试给他们的新文件版本默认为12.0的库,如果他们遇到他们将光盘上的文件和在具有office 2003的计算机上使用它,这些库只是缺失而且它不再识别适当的11.0对象库。 所以最后我的问题....任何建议(保存明显并构建一个真正的应用程序...大声笑...会喜欢....没有$)来处理这个?是否有代码可以/将评估使用vba打开文件时需要设置的库?那可能吗?     
已邀请:
可以使用删除方法删除引用,然后使用AddFromFile方法或AddFromGuid方法添加引用。 最近StackOverflow问题的答案中提供了AddFromFile方法:以编程方式添加引用但是,请务必阅读Tony的答案...如果您将应用程序作为MDE分发,那么您就是SOL。 考虑切换到PowerPoint和Outlook内容的后期绑定。这样你就不必使用引用(后期绑定不需要引用)。后期绑定的一个缺点是您在开发过程中失去了IntelliSense的优势。但是,您可以使用早期绑定进行开发,然后切换到后期绑定以进行部署。替换您在引用库中使用任何命名常量的值... debug将突出显示您忽略的任何内容。 一个经常反驳的观点是后期绑定会造成“性能损失”。但是,我还没有遇到一个用例,其中“减速”大到足以让人类观察者注意到。 无论如何,我多年来一直在使用后期绑定,以避免您现在正在努力解决的部署问题。 编辑:这是一个使用Excel类型库的示例。我把它设置为使用早期绑定。要将其转换为后期绑定,请注释掉'* early binding ...下的声明,并取消注释'* late binding ... 另请注意包含命名常量x 2Automatic的2行。
Public Sub EarlyVsLateBinding()
    Dim strFullPath As String
    '* early binding requires reference to Excel type library *'
    Dim objExcel As Excel.Application
    Set objExcel = New Excel.Application
    Dim objBook As Excel.Workbook
    Dim objSheet As Excel.Worksheet
    '* late binding; no reference required *'
'    Dim objExcel As Object '
'    Dim objBook As Object '
'    Dim objSheet As Object '
'    Set objExcel = CreateObject("Excel.Application") '

    strFullPath = CurrentProject.Path & Chr(92) & "foo.xls"

    Set objBook = objExcel.Workbooks.Open(strFullPath)
    Set objSheet = objBook.Worksheets("bar")
    objSheet.Range("B1").Select
    With objExcel.Selection.Font
        .Name = "Arial"
        .FontStyle = "Regular"
        .Size = 10
        .ColorIndex = xlAutomatic 'named constant available with reference set '
        '.ColorIndex = -4105 'substitute xlAutomatic value so we drop reference
    End With
    objBook.Close SaveChanges:=True
    objExcel.Quit
    Set objSheet = Nothing
    Set objBook = Nothing
    Set objExcel = Nothing
End Sub
    

要回复问题请先登录注册