VBA判断引用库是否完整并自动修复

标签: VBA 自动修复
26人阅读 评论(0) 收藏 举报
分类:

VBA判断引用库是否完整并自动修复

作者:AntoniotheFuture

关键词:VBA,自动修复

开发平台:office

平台版本上限:2010

平台版本下限:尚未发现

开发语言:VBA

简介:我们在开发VBA程序时,经常要调用很多的库,比如说ADO,Windows命令行这些引用,但是如果用户的机子上没有这些库,打开我们的程序就会报错,为了避免这种情况发生,或者减少我们与用户沟通的成本,我们可以用到下面的一个函数:


Public Function CheckVBA() As Integer

Dim Str1 As String
Dim str2 As String
CheckVBA = 1


'检查三次
For iii = 1 To 3
For ii = 2 To Sheet6.UsedRange.Rows.Count
    Sheet6.Cells(ii, 8) = 0
    For i = 1 To ActiveWorkbook.VBProject.References.Count
        With ActiveWorkbook.VBProject.References(i)
            If .GUID = Sheet6.Cells(ii, 2) Then
                If .IsBroken Then
                    ThisWorkbook.VBProject.References.Remove (ThisWorkbook.VBProject.References(i))
                    i = i - 1
                    '尝试自动修复
                    If Dir(Sheet6.Cells(ii, 9), vbDirectory) = "" Then
                        Sheet6.Cells(ii, 8) = 2
                    Else
                        ThisWorkbook.VBProject.References.AddFromFile "Sheet6.Cells(ii, 9)"
                    End If
                ElseIf .Major < Sheet6.Cells(ii, 3) Then
                    Sheet6.Cells(ii, 8) = 3
                ElseIf .Major = Sheet6.Cells(ii, 3) And .Minor < Sheet6.Cells(ii, 4) Then
                    Sheet6.Cells(ii, 8) = 4
                Else
                    Sheet6.Cells(ii, 8) = 1
                End If
            End If
        End With
    Next
Next
Next
Str1 = "检测到你的电脑缺失以下组件且无法自动修复,请点击确定查看网页教程:"
str2 = ""

For ii = 2 To Sheet6.UsedRange.Rows.Count
    Select Case Sheet6.Cells(ii, 8)
    Case 0
        str2 = str2 & Chr(10) & "不存在:" & Sheet6.Cells(ii, 1)
    Case 2
        str2 = str2 & Chr(10) & "损坏:" & Sheet6.Cells(ii, 1)
    Case 3
        str2 = str2 & Chr(10) & "版本太低:" & Sheet6.Cells(ii, 1)
    Case 4
        str2 = str2 & Chr(10) & "版本可能太低:" & Sheet6.Cells(ii, 1)
    End Select
Next

If Not str2 = "" Then
    CheckVBA = 0
    If MsgBox(Str1 & str2, vbYesNo, "检查组件") = vbYes Then
        For ii = 2 To Sheet6.UsedRange.Rows.Count
            If Not Sheet6.Cells(ii, 8) = 1 Then
                ActiveWorkbook.FollowHyperlink (Sheet6.Cells(ii, 7))
            End If
        Next
    End If
End If


End Function

此函数对应的表结构如下:大家可以根据自己的程序来构建合适的数据源:



运行结果:



这样子调用此函数即可:



查看评论

EXCEL VBA编程进阶

工作簿:讲了工作簿的表达方式,以及批量操作工作簿的数据。比如合并多工作簿数据。 工作表:讲了工作簿的表达方式,以及批量操作工作表的数据。 单元格:单元格是操作频率最高的对象,单元格的表达,通过方法或属性获取等。 数组:为了提高VBA的运算速度,特别讲解了数组。以及他的相关应用 图形:这是最精彩的部分。讲了图形的各种批量插入方式。通过坐标自动绘制图形。批量制作员工卡等实例。很多实例在工作上都能用到。
  • 2016年02月06日 11:14

VBA判断引用库是否完整并自动修复

VBA判断引用库是否完整并自动修复作者:AntoniotheFuture关键词:VBA,自动修复开发平台:office平台版本上限:2010平台版本下限:尚未发现开发语言:VBA简介:我们在开发VBA...
  • qq_15041159
  • qq_15041159
  • 2018-04-15 19:57:51
  • 26

无法打开此修补程序包,请确认该修补程序包存在并且可以访问它以检查这个修补程序包是有效的

卸载office2003和安装2003的遇到的问题 解决:找了一个YOUR UNINSTALLER 软件 卸载了下载:http://www.ursoftware.com/dlds/public/yus...
  • dragoo1
  • dragoo1
  • 2017-01-17 21:28:32
  • 1354

ClearCase VOB 的结构和相关问题的诊断与修复

ClearCase VOB 的结构和相关问题的诊断与修复 ...
  • hello_wyq
  • hello_wyq
  • 2006-08-02 10:52:00
  • 1331

《伸手系列》第二集-oracle数据库“灾难性”数据恢复-(一)

文章开始之前,先把重要的事情说三遍,不要随便用‘truncate’、不要随便用‘truncate’、不要随便用‘truncate’!!! 可能你觉得它比delete速度快的多,但是你是否真的确定...
  • qq_22260641
  • qq_22260641
  • 2017-10-11 11:48:50
  • 2778

EXCEL2007<em>VBA</em>与宏完全剖析 1/4

共 110MB,分为四个分卷 EXCEL 2007 <em>VBA</em>与宏完全剖析 OFFICE2007 OFFICE...综合应用——<em>修复</em>录制的代码第3章 <em>引用</em>区域 3.1 Range对象 3.2 使用...
  • 2013年01月22日 00:00

利用 Ant 和 Eclipse 有效地提高部署工作效率

转载自 http://www.ibm.com/developerworks/cn/java/j-lo-ant-eclipse/     现在有一个 web 项目,是多人进行开发的,通过 CV...
  • senjixu
  • senjixu
  • 2013-09-06 17:29:43
  • 429

SQL事件探查器,基本说明

 请问“SQL事件探查器”里表格的标题,如CPU,Read,Write,Duration,SPID.........的意思?2006-10-19 12:04 SQL   事件探查器数据列     S...
  • laolaowhn
  • laolaowhn
  • 2008-09-18 13:07:00
  • 1380

设计模式(Design Pattern)概念

设计模式(Design Pattern)2007-09-12 21:28出處:http://hi.baidu.com/luchaoshuai/blog/item/072a8711c7ca5313b91...
  • laolaowhn
  • laolaowhn
  • 2007-09-26 10:23:00
  • 650
    个人资料
    等级:
    访问量: 0
    积分: 41
    排名: 0
    文章存档