寻找与VB(MSVisualStudio 2005)和VBA(Excel)不同的东西

我在网上find了我想要做的事情的代码。 像往常一样,我在Visual Studio中解雇了它,它没有任何问题。

问题发生在当我尝试将它移植到Excel时,它停止工作。 据我所知,VBA是一个淡化的VB版本。 (基于阅读本文: Visual Basic 6.0和VBA的区别 )

因此,如何才能找出两种编程环境之间的差距?

详细一点:我在Visual Studio中编写了一个程序,当我按下一个button时,会给我发一封电子邮件。 然后,我尝试将其作为macros移植到Excel中,但这不起作用。

编辑:Adeed额外的问题信息

这是我在Visual Studio公共类Form1中

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CDO_Mail_Small_Text() End Sub Sub CDO_Mail_Small_Text() Dim iMsg As Object Dim iConf As Object Dim strbody As String Dim Flds As Object iMsg = CreateObject("CDO.Message") iConf = CreateObject("CDO.Configuration") iConf.Load(-1) ' CDO Source Defaults Flds = iConf.Fields With Flds .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _ = "morgan" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Update() End With strbody = "Hi there" & vbNewLine & vbNewLine & _ "This is line 1" & vbNewLine & _ "This is line 2" & vbNewLine & _ "This is line 3" & vbNewLine & _ "This is line 4" With iMsg .Configuration = iConf .To = "Jeremiah.Tantongco@Powerex.com" .CC = "" .BCC = "" .From = """Ron"" <ron@something.nl>" .Subject = "Important message" .TextBody = strbody .Send() End With End Sub 

末class

这是我在Excel中运行的内容:

 Sub Button1_Click() CDO_Mail_Small_Text End Sub Sub CDO_Mail_Small_Text() Dim iMsg As Object Dim iConf As Object Dim strbody As String Dim Flds As Object iMsg = CreateObject("CDO.Message") iConf = CreateObject("CDO.Configuration") iConf.Load (-1) Flds = iConf.Fields With Flds .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _ = "morgan" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Update End With strbody = "Hi there" & vbNewLine & vbNewLine & _ "This is line 1" & vbNewLine & _ "This is line 2" & vbNewLine & _ "This is line 3" & vbNewLine & _ "This is line 4" With iMsg .Configuration = iConf .To = "Jeremiah.Tantongco@Powerex.com" .CC = "" .BCC = "" .From = """Ron"" <ron@something.nl>" .Subject = "Important message" .TextBody = strbody .Send End With End Sub 

不工作是:“运行时错误'91':对象variables或块variables未设置”

当我debugging它需要我到以下行:“iMsg = CreateObject(”CDO.Message“)”

欢呼声,耶利米坦通科

在VB6 / VBA中,您需要在使用对象时使用SET语句

 Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") 

VBA是Classic VB的一个即时编译版本。 我一直认为这完全VB 6.0和VB脚本之间的中途。 关键是你只能访问基本的VB 6.0库和其他COM库。 因为许多好的COM库几乎总是可用的(比如Scripting,ADO 2.6,Excel库和Word等Office库),这实际上是非常强大的。

但是,这不是.NET,你不能访问任何.NET库。 当你说Visual Studio,你的意思是Visual Studio 6.0? 如果您将代码从VS.NET复制到Excel,那没有任何工作的机会。 但是,如果您将代码从VS6(或更早版本)复制到Excel VBA,则应该能够正常工作。 你可能只需要引用你在VS中引用的库。 我们需要更多的信息,当然还有错误。

无法证实代码中的差异,但以下链接在VBA中发送电子邮件的例子很多。 可以帮助你弄清楚什么是错的。

http://www.rondebruin.nl/sendmail.htm