zoukankan      html  css  js  c++  java
  • 《Excel VBA编程开发》附加内容1:VBA生成GUID

     

    1.1 VBA生成GUID

    全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

    GUID一词有时也专指微软对UUID标准的实现。

    在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。

    GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

    本节介绍VBA中生成GUID的方法

    1.1.1 使用ScriptLet生成GUID

    在VBA工程中添加引用“Microsoft ScriptLet Library”。

     

     Sub 生成GUID()

        Dim MyGUID As String

        Dim Lib As Scriptlet.IGenScriptletTLib

        Set Lib = CreateObject("Scriptlet.Typelib")

        MyGUID = Lib.GUID

        Debug.Print MyGUID

        Debug.Print LCase(Mid(MyGUID, 2, 36))

    End Sub

    运行上述代码,立即窗口打印出带花括号和不带花括号的两种形式的GUID,根据需要选择使用。 

     

     然而,在很多电脑上运行上述代码,当运行至CreateObject那行时,经常出现如下错误。

     

     这种情况下,使用API函数更为可靠。

    1.1.2 使用API函数生成GUID

    Private Type GUID_TYPE

        Data1 As Long

        Data2 As Integer

        Data3 As Integer

        Data4(7) As Byte

    End Type

    Private Declare Function CoCreateGuid Lib "OLE32.DLL" (GUID As GUID_TYPE) As Long

    Private Declare Function StringFromGUID2 Lib "OLE32.DLL" (GUID As GUID_TYPE, ByVal lpStrGuid As Long, ByVal cbMax As Long) As Long

     

    Sub API生成GUID()

        Dim GT As GUID_TYPE

        Dim MyGUID As String

        Call CoCreateGuid(GT)

        MyGUID = String(39, vbNullChar)

        Call StringFromGUID2(GT, StrPtr(MyGUID), 39)

        Debug.Print MyGUID

        Debug.Print LCase(Mid(MyGUID, 2, 36))

    End Sub

    运行上述代码,同样打印出新的GUID。

  • 相关阅读:
    ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版
    分享产品发布的10条经验
    Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
    Java知识回顾 (14)网络编程
    Java知识回顾 (13)序列化
    idea下java项目的打包与使用
    Java知识回顾 (12) package
    Java知识回顾 (11) 异常处理
    创建表时 ORA-00955: 名称已由现有对象使用
    工作笔记—hibernate之QueryCriteria
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/14723073.html
Copyright © 2011-2022 走看看