我可以使用Vim进行VBA编程吗?

5

我现在的工作之一是在Microsoft Office文档中构建一些动态功能。我发现唯一的方法是通过VBA - 因此,内置于Office文档中的VBA编辑器。

VBA编辑器非常糟糕。它缺少许多现代开发环境需要支持的功能。但最糟糕的部分是,我是一个硬核的 Vim 爱好者,而 VBA 编辑器几乎不比记事本好多少。

所以:有没有办法可以有效地使用 Vim 来进行 VBA 编程?除了从不同的窗口将我的代码复制粘贴到 VBA 编辑器中进行尝试之外?


我相信答案是“不”。如果你所说的动态功能是指事件,那么可以考虑使用VSTO或类似的工具。这样你就可以使用Visual Studio的IDE,它确实有一些vim插件。我知道这一点,因为我曾经想学习vim并安装了它。(但我失败了) - Doug Glancy
可能是有没有VBA开发的替代IDE?的重复问题。 - SeanC
2个回答

1

我从未使用过VBA编辑器,但是我在MS Visual Studio中做了一些事情(MSVS的编辑器确实有一些不错的功能,但我仍然更喜欢vim进行大多数编辑)。

我在MSVS中打开或创建源文件。然后,我通过右键单击选项卡并选择“复制完整路径”获取文件的完整路径,并在不同的窗口中使用vim打开相同的文件。

我使用alt-tab在vim和MSVS之间来回切换。当我在vim中进行更改时,我使用:w写入更改,然后alt-tab返回到MSVS。 MSVS编辑器注意到磁盘上的文件已更改,并提供读取更新版本的选项。

或者,如果我在MSVS中更改文件,则写入文件(文件>保存...),然后alt-tab转到vim并使用:e!将更新的文件读入vim缓冲区。

无需复制粘贴代码,因为两个编辑器都在操作同一个磁盘文件。我只需要非常小心地不要在vim和MSVS中同时进行更改而不将文件写入磁盘。

这很丑陋,不适合每个人,但对我有效。也许它对你也有效。

我使用Cygwin,所以实际上有点复杂;Cygwin程序(包括vim)不识别Windows风格的路径。我可以这样做:

vi $(cygpath 'WINDOWS_PATH')

其中WINDOWS_PATH是从MSVS获取的完整路径粘贴而来。单引号是必要的,以防止shell解释\字符。如果您正在使用Windows本地vim,则此步骤不是必需的。


4
我考虑过这个问题,但不幸的是,你为 Office 文档编写的任何 VBA 代码都是嵌入其中的,代码并未以自己的文件形式保存在磁盘上。 - Austin R
还有,你实际上使用vi进行编辑而不是vim吗?那很有趣 :-) - Austin R
@AustinR:好的,那么我猜这对你来说行不通,至少需要额外的工作。在我的系统上,vi命令调用的是vim(在文本模式下,而不是GUI)。 - Keith Thompson

-1

这是一个有趣的观点。大约15年前,我曾经短暂地使用过VI,基于那个经验,我认为VBA编辑器比VI(或VIM?)更适合它的目的。是否有一种特定的功能从VBA编辑器中缺失,使得你不能有效地用它来进行VBA编辑?VBA多年来没有得到增强,但事实上,它无法被淘汰,因为每个人都发现它非常易于使用。

如果你愿意,你可以用你喜欢的语言编写一些代码,通过COM对象操纵你的Word文档(如果它支持)。然后你可以从简单的Word文档内部存根调用外部代码。不过,你需要克服一些安全限制。

例如,我可以用VBScript、VBA、Powershell或.Net编写一些代码来操作Word文档。我可以从一个小的VBA片段中调用它(可能附加在标准Word工具栏上的按钮上)。


1
我其实同意 - 我发现 VBA 相当容易使用,而且它确实可以做到我需要的一切。我发现环境相当过时,但这并不意味着它不能工作。我的抱怨是我无法使用 Vim 来编辑 VBA 代码,因为它嵌入到文档本身中。 - Austin R
1
我得到的最佳答案是 - 我认为我真正想要的是不可能的。 - Austin R

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