如何在VBA中硬编码长字符串

如何在VBA中硬编码长字符串,vba,excel,Vba,Excel,我正在编写一个宏,将VBA模块保存为另一个自解压模块中的64位字符串。自解压模块设计用于保存多个长字符串(可以是任意长度,最大可达2GB字符串),以及一些短代码片段,以解压缩字符串并导入它们所表示的模块 无论如何,当我的宏构建自解压模块时,它需要保存非常长的字符串(我保存为硬编码Consts)。但如果它们太长(>1024 ish),无法在VBA编辑器中的一行中显示,则会出现错误 我应该如何格式化这些硬编码字符串,以便可以将它们保存为Consts或以其他方式保存在我的自解压模块中?到目前为止,我一

我正在编写一个宏,将VBA模块保存为另一个自解压模块中的64位字符串。自解压模块设计用于保存多个长字符串(可以是任意长度,最大可达2GB字符串),以及一些短代码片段,以解压缩字符串并导入它们所表示的模块

无论如何,当我的宏构建自解压模块时,它需要保存非常长的字符串(我保存为硬编码
Const
s)。但如果它们太长(>1024 ish),无法在VBA编辑器中的一行中显示,则会出现错误


我应该如何格式化这些硬编码字符串,以便可以将它们保存为
Const
s或以其他方式保存在我的自解压模块中?到目前为止,我一直在将每个字符串保存为1000个字符块中的多个
Const
声明,但最好每个项目只有一个字符串。

如注释所示,您可以使用自定义XML部分在工作簿中存储信息

代码如下:

Option Explicit

Public Sub AddCustomPart()

    Dim oXmlPart    As CustomXMLPart
    Dim strTest     As String

    strTest = "<Test_ID>123456</Test_ID>"

    Set oXmlPart = ReadCustomPart("Test_ID")

    '/ Check if there is already an elemnt available with same name.
    '/ VBA or Excel Object Model, doesn't perevnt duplicate entries.
    If oXmlPart Is Nothing Then
        Set oXmlPart = ThisWorkbook.CustomXMLParts.Add(strTest)
    Else
        MsgBox oXmlPart.DocumentElement.Text
    End If

End Sub

Function ReadCustomPart(strTest As String) As CustomXMLPart

    Dim oXmlPart    As CustomXMLPart

    For Each oXmlPart In ThisWorkbook.CustomXMLParts
        If Not oXmlPart.DocumentElement Is Nothing Then
            If oXmlPart.SelectSingleNode("/*").BaseName = strTest Then
                Set ReadCustomPart = oXmlPart
                Exit Function
            End If
        End If
    Next

    Set ReadCustomPart = Nothing

End Function
选项显式
公共子AddCustomPart()
将oXmlPart设置为CustomXMLPart
将strTest设置为字符串
strTest=“123456”
设置oXmlPart=ReadCustomPart(“测试ID”)
“/检查是否已有同名的元素可用。
“/VBA或Excel对象模型,不重复条目。
如果oXmlPart什么都不是,那么
设置oXmlPart=ThisWorkbook.CustomXMLParts.Add(strTest)
其他的
MsgBox oXmlPart.DocumentElement.Text
如果结束
端接头
函数ReadCustomPart(strTest作为字符串)作为CustomXMLPart
将oXmlPart设置为CustomXMLPart
对于此工作簿中的每个oXmlPart.CustomXMLParts
如果不是oXmlPart.DocumentElement则为Nothing
如果oXmlPart.SelectSingleNode(“/*”).BaseName=strTest,则
设置ReadCustomPart=oXmlPart
退出功能
如果结束
如果结束
下一个
设置ReadCustomPart=Nothing
端函数

使用行连续字符
您可以连接长度不超过15188个字符的字符串常量。也要考虑<代码> CuxMxPrase<代码>,而不是内联值。当我指定<代码> Strest必须等于什么时,这是否仍然面临编写长字符串的问题?将该字符串设为TXT文件,然后从那里读取并嵌入自定义XML。