【问题标题】:what is the difference between VB vs VBA?VB和VBA有什么区别?
【发布时间】:2011-11-12 18:16:41
【问题描述】:

我正在为 Excel 2007 开发这个项目(一个插件)。它为此使用 aspose 单元格以及 C#。我没有编写代码,而是从别人那里接手了这个项目。所以我仍在学习 excel 部分,因为我只知道 C#。我确实注意到有一些用于创建工作簿/工作表的代码。我如何知道它是用 VB 还是 VBA 编写的,以便我可以学习它?文件扩展名有 .cls、.frm、.bas 等。我使用的是 Visual Studio 2010。

此外,工作簿/工作表在创建后受密码保护。当我尝试通过 VB/VBA 代码更改密码(无论是什么)时,它会在构建过程中产生错误,例如预期标识符、预期声明等。但是当我撤消的变化,所有的错误都消失了。我所做的唯一更改是更改存储密码的字符串。 (字符串“密码”更改为“密码1”)突然其他代码行开始出现错误。错误是预期的标识符,预期的声明等,这对我来说没有意义。因此,在通过 VB/VBA 进行密码保护后,我不得不通过 C# 更改密码。 另外,如何调试 VB/VBA 代码。我尝试通过 VS2010 设置断点,但是当我运行项目时它没有击中它们。我确信工作表是使用 VB/VBA 创建的,因此它进入了这些代码,但无法调试。

我使用 Visual Studio2010 打开插件,这就是代码的工作方式,包括 C# 和 VB/VBA。我不使用 Alt+F11 修改任何内容。

【问题讨论】:

  • 我注意到您从未接受过答案。为此,请单击您认为最好的答案左上角的箭头。这将使编写它的用户得到认可,并帮助其他人在参考时找到最佳答案。你的问题。
  • 这个问题几乎是那些被关闭的开放式问题之一。

标签: vba excel


【解决方案1】:

.cls、.frm 和 .bas 是 VBA 文件。我建议您尝试使用 VBE(适用于 VBA 的 Visual Studio 等效项)在 Excel 中调试代码。在那种环境下调试很容易。

VB(VB.Net)和VBA的区别还是挺大的。话虽如此,VBA 是一门相当简单的语言,所以如果你已经掌握了 C#,我相信你可以通过一些阅读和实验来学习 VBA。

如果您对实际代码有任何疑问,我建议您将其作为单独的问题发布。 :)

【讨论】:

  • 要明确一点,VB.Net 和 VBA 的区别是相当大的。 VB6 和 VBA 的区别非常小。不幸的是,微软在使用“Visual Basic”这个术语时玩得又快又松,不必要地混淆了事情。我相信“Visual Basic”正式指的是 VB.Net,所以你断言 VB 和 VBA 非常不同是正确的。
  • 对不起 - 是的,我的意思是 VB.Net。 :)
  • 这不是真的! - .cls、.frm 和 .bas 也是 VB 文件。
  • 澄清一下,VB 和 VB.NET 是有区别的
  • 是的,这就是为什么我将 (VB.NET) 放在括号中以明确我在说什么,但没有使用与 OP 不同的词。感谢您的进一步澄清。
【解决方案2】:

如何获取代码?如果通过 Excel 使用 VBE,例如按 Alt+F11,则它是 VBA。如果你打开一个项目,那么它可能是 VB(VB6)。请注意,VB.NET 使用 .vb 扩展名。此外,由于 VBA 是 VB 的子集,因此如果您从 VBE 项目中导出 VBA,则导出的文件默认为其 VB 表亲的文件扩展名。

我们真的需要知道您是如何获得代码的。

就像我说的,VBA (6.x) 是 VB6 的子集。 Excel 部分只是一个使用 VBA 的对象模型。 VB.NET 不同,不是因为文件扩展名错误。

因此,集中精力学习VBA和Excel 2007 Object Model

MSDN 在http://social.msdn.microsoft.com/Search/en-US?query=VBA&ac=8 上搜索 VBA。

创建 VBA 宏以在 Excel 2007 中操作工作表http://msdn.microsoft.com/en-us/library/dd553655(v=office.12).aspx

http://msdn.microsoft.com/en-us/library/bb931201(v=office.12).aspx 上的这篇文章 VBA 与 Visual Studio Tools for Office System (3.0) 的互操作性 应该会有所帮助。

【讨论】:

  • 我使用 Visual Studio2010 打开插件,这就是代码的工作方式,包括 C# 和 VB/VBA。
  • 如果项目是 C#,则无法通过 Visual Studio 2010 打开 VB/VBA 代码。您是通过 VS 打开 Excel 工作簿然后进入代码吗?
  • 另外,就像我说的,VBA (6.x) 是 VB6 的子集。 Excel 部分只是一个使用 VBA 的对象模型。 VB.NET 不同,不是因为文件扩展名错误。
  • 它是一个 C# 项目。我在 VS2010 中打开它,当我运行它时,它会打开电子表格作为输出。基本上,该项目只是为 Excel 2007 创建了一个 AddIn 插件。我在 VS2010 中打开该项目。它包含许多文件夹,其中一个文件夹中有 VB/VBA 代码。大部分代码是 C#。 VB/VBA 仅用于创建工作簿/工作表。
猜你喜欢
  • 2010-11-25
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2017-04-07
  • 2023-02-14
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多