gpt4 book ai didi

excel - 我可以在 VBA 中使用 .res(资源)文件吗?这样做有好处吗?

转载 作者:行者123 更新时间:2023-12-03 21:53:57 24 4
gpt4 key购买 nike

背景

在标题为 Optimize string handling in VB6 - Part I 的文章中,在“将字符串存储在 .res 文件中”小节下,作者讨论了将字符串存储在 .res 文件中,与 VB6 中的字符串文字需要 2 个字节相比,每个字符只需要 1 个字节。

这篇文章是关于 VB6 的,但我正在研究它在 VBA(基于 VB6)中的应用。

问题

  • 如何在 VBA 中使用 .res/Resource 文件(如果可能的话)?
  • 有什么好处?
  • 最佳答案

    你不能 - 无论如何不能直接。在 VB6 中,.res 文件是您可以添加到项目中的各种组件类型之一,但在 VBA 中, strip 化 IDE 没有资源编辑器功能(不确定它的实际名称,已经有一段时间了..),毫无疑问是现代 Visual Studio 中 .resx 设计器的直接祖先。
    从技术上讲,您可以在您的 VBA 项目中使用 .res 文件,但是您也可以使用更现代的 .resx 格式,MSXML 在技术上应该能够使用......尽管,即使在 .NET 中我们通常也不会操作.resx 文件,并且有一个代码生成器涉及将每个资源键转换为生成的类的属性 - 就是这样:

    <data name="SelectAll_Button" xml:space="preserve">
    <value>Select All</value>
    </data>
    ...自动变成这样:
    /// <summary>
    /// Looks up a localized string similar to Select All.
    /// </summary>
    public static string SelectAll_Button {
    get {
    return ResourceManager.GetString("SelectAll_Button", resourceCulture);
    }
    }
    从一开始就为您的资源字符串使用 .res/.resx 文件的优势,即使您的应用程序“只需要 en-US 字符串”,主要是关于关注点分离:资源字符串不是代码,它们是数据,并且数据不属于代码。
    现在,在 VBA 领域,分发带有 .resx 文件的 Excel 工作簿是……嗯。 .res/.resx 只是一种数据格式,重要的是它要解决的问题:资源键的存储。在 Excel 中托管的 VBA-land 中,这很容易成为某个隐藏工作表上的表格。
    然后 ResourceManager可以是一个 VBA 类,其职责是进入该隐藏表(可能将内容缓存到某个字典中以避免重复点击工作表)并获取给定文化键的给定字符串(“en-US”、“fr- CA”、“de-DE”等),尽管 LCID代码可能会使事情更容易在 COM 领域中集成(例如,使用此类 ID 的 native /Win32 API)。
    想象一下,您正在构建一个复杂的内部应用程序,并从一开始就这样做:您将可显示的字符串内容与代码分开,并以这种方式构建所有内容。有一天,公司在西类牙收购了一家公司,或者在德国开设了办事处,突然您的应用程序需要翻译。
    因为本地化一直是一个问题,你所要做的就是翻译资源字符串,然后噗!,应用程序知道隐藏表中有一个新列,因此有一种新语言可供选择,一切都“正常工作”生活很棒。您请取消隐藏工作表并按原样发送它们并附上说明。
    如果本地化是事后的想法……我真诚的同情……这不会很有趣。 #BTDT

    关于excel - 我可以在 VBA 中使用 .res(资源)文件吗?这样做有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62180103/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com