在VBA中使用System.Collections.ArrayList - 需要哪个.NET Framework版本?

3
我想在我的Excel VBA脚本中使用System.Collections.ArrayList。现在我想知道:需要哪个.NET Framework版本?
我问这个问题的原因是,在这个网站上,它解释了该类的用法,并且关于可能出现的错误信息,它强烈指出(由我强调):
“这是由于没有安装正确的.NET Framework版本引起的。正确的版本是3.5。无论您是否有像4.7这样的更新版本,您必须安装3.5。”
与此相反,Microsoft的ArrayList文档在“适用于”下清楚地列出了许多.NET Framework版本。
现在,我肯定更愿意相信官方文档而不是单个网页:尽管我进行了大量的谷歌搜索,但我没有找到另一个网站证实该限制。但也许只有3.5是允许在VBA中使用该类的版本。
那么,请问有人能告诉我如何找出我是否可以在所有列在文档中的版本中使用ArrayList(或任何其他.NET类,如果可以做出概括)吗?还是真的只有v3.5?
哦,以防这很重要:我知道并使用晚期绑定来避免您可以添加到Excel工作簿中的引用,以避免与特定版本引用的问题。
Dim arrLst As Object
Set arrLst = CreateObject("System.Collections.ArrayList")

1
看起来你提到的网站可能是正确的。我使用的是.NET Framework 4.8,在尝试使用ArrayList时出现了自动化错误。 - undefined
通常,在VBA中使用ArrayList,您需要添加对mscorlib的引用。如果mscorlib尚未出现在可用库列表中,则需要浏览到'C:\Windows\Microsoft.NET\Framework\v4.0.30319'(或Framework64)。 - undefined
1
@Freeflow:例如,我之前尝试使用数组列表之前,已经用ThisWorkbook.VBProject.References.AddFromFile "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb"的方式实现了。看起来确实需要安装3.5版。 - undefined
在我的引用中,名称被给定为mscorelib.dll。我模糊地记得当我尝试添加.tlb时它没有起作用,但添加.dll却可以。 - undefined
你需要添加 "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb",然后你将得到对 mscorlib.dll 的引用。我刚刚做了这个,这比模糊的回忆要好。 - undefined
1个回答

4

正如评论中所说,我没有安装和运行 .Net Framework 3.5

Dim arrLst As Object
Set arrLst = CreateObject("System.Collections.ArrayList")

出现了自动化错误。 我安装了 .Framework 3.5,自动化错误消失了。

安装 .Net Framework 我按照 此文档 中的步骤进行,但需要管理员权限。

为了获取已安装的 .Net Framework 版本信息,我使用了 此 PowerShell 脚本


您的PowerShell脚本链接现在指向一个通用页面。是否有一个PowerShell脚本可以安装Framework 3.5? - undefined
是的,没错,现在链接指向一个通用页面。这篇文章从来都不是关于“如何安装Framework 3.5”的。所以,以前有一个脚本可以确定Net.Framework的版本,但现在已经消失了。我不知道它现在在哪里,但我担心你得自己去谷歌一下。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接