打开vba工具自动获取新版本

原创文章,欢迎转载:http://miao.blog/article/vba-auto-update

vba工具发布后,每次修改都需要通知大家更新,下边的代码,实现打开工具自动获取最新版本,不更新的话自动关闭工具,这样就能保证工具更新的即时性和强制性。

一、 在大家都能访问的地方放一个app_version.ini文件,里边这样写:
[APP_NAME]
Version=1.0.3
FileName=App Name - v1.0.3.xlsm
Path=\\..App Name - v1.0.3.xlsm

[APP_NAME] 这里要替换为你自己的工具名,比如[Workhour Helper]


二、 然后插入一个类模块 cAutoUpdate
Private Const APP_VERSION_INI_FLIE As String = "..\app_version.ini"

Sub CheckNewVersion(APP_NAME As String, APP_VERSION As String)
    On Error GoTo ErrorHandler
    
    Dim new_version As String
    new_version = ReadStringFromIni(APP_VERSION_INI_FLIE, APP_NAME, "Version")
    
    If APP_VERSION <> new_version Then
        If MsgBox("工具有新版本 " & new_version & ",请下载新版工具使用!", vbYesNo) = vbYes Then
            Dim new_app_name As String, new_app_path As String, local_app_path As String
            new_app_name = ReadStringFromIni(APP_VERSION_INI_FLIE, APP_NAME, "FileName")
            new_app_path = ReadStringFromIni(APP_VERSION_INI_FLIE, APP_NAME, "Path")
            local_app_path = ThisWorkbook.Path & "\" & new_app_name
            With CreateObject("Scripting.FileSystemObject")
                .CopyFile new_app_path, local_app_path, True
            End With
            
            Workbooks.Open local_app_path
            ThisWorkbook.Close
        Else
            MsgBox "工具关闭!"
            ThisWorkbook.Close False
        End If
    End If
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
    Debug.Print Err.Description
End Sub


三、在Workbook_Open事件中加如下代码
Private Sub Workbook_Open()
    With New cAutoUpdate
        .CheckNewVersion "APP_NAME", "1.0.2"
    End With
End Sub

如果当前打开的工具版本号跟版本配置文件的版本号不一致,就会自动下载最新的工具。

备注:ReadStringFromIni函数参考Ini配置文件读取:http://miao.blog/article/vba-ini

推荐阅读
获取Excel的AddIn里边的Sheet对象
VBA中进行copy和paste的时候,无规律的出现 “类Worksheet的Paste方法无效”错误 怀疑是电脑太快,copy操作还没有完成,就直接运行paste,导致paste出错。 所以在copy操作后,sleep一小段时间,结果真的解决了问题。
使用VBA调用Outlook发送邮件
评论