此 VBA 代码的 C# 等效项是什么

本文关键字:是什么 VBA 代码 | 更新日期: 2023-09-27 17:57:37

我有这个VBA代码,可以刷新Excel工作表上的数据连接,并且我正在更新代码,并且喜欢C#的可靠性,而不是Visual Basic...

所以我的问题是这个VBA代码的C#等效物是什么:

Set wb = Workbooks.Open(fileName, 0, True)
wb.Connections(baseName & " POS Report").OLEDBConnection.BackgroundQuery = False
wb.RefreshAll
wb.Connections(baseName & " POS Report").OLEDBConnection.BackgroundQuery = True

我已经在 C# 中尝试了逻辑等效项,但它不起作用......任何帮助将不胜感激!

我有基础知识:

Application excel = new Application();
Workbook ob = excel.Workbooks.Open(eBook[i], 0, true);
ob.Connections(baseName + " POS Report").OLEDBConnection.BackgroundQuery = true;

这里出现了错误,Connections它说"不可调用的memer'Microsoft.Office.Interop.Excel._Workbook.Connections'不能像方法一样使用">

此 VBA 代码的 C# 等效项是什么

Workbooks.Open返回一个Workbook,该具有包含Connections集合的Connections成员。您可以使用 Item 方法访问这些连接的单个项目。

所以它可能应该是这样的:

ob.Connections.Item(baseName + " POS Report").OLEDBConnection.BackgroundQuery = true;

在 VB 中,您可以将类的一个属性或方法指定为"默认"成员。然后,您可以将该类的任何标识符用于"好像"它是一个方法名称的实例,它将自动调用/访问默认成员。

在这种情况下,Connections是一个集合,几乎所有 VBA 集合类的默认成员都是一个名为 Item 的方法,该方法按索引(数字或名称(返回指定的项。 因此,在 VB 中,这两者是等价的:

WorkbookConnection x = wb.Connections("foo")
WorkbookConnection x = wb.Connections.Item("foo")

C# 没有相同的默认成员概念,因此不能使用第一种语法。不过,第二种语法只是普通的成员访问,因此工作正常。