gpt4 book ai didi

visual-studio - 找出与 VB(MSVisualStudio 2005) 和 VBA(Excel) 的不同之处

转载 作者:行者123 更新时间:2023-12-04 21:26:37 25 4
gpt4 key购买 nike

我在网上找到了我想做的事情的代码。
像往常一样,我在 Visual Studio 中启动了它,它没有问题。

问题在于,当我尝试将其移植到 Excel 时,它停止工作。
据我了解,VBA 是 VB 的淡化版本。 (根据阅读这篇文章:
Difference between Visual Basic 6.0 and VBA )

因此,我如何找出在两个编程环境之间切换时丢失了什么?

提供更多细节:
我在 Visual Studio 中编写了一个程序,当我按下按钮时会向我发送一封电子邮件。
然后我尝试将它作为宏移植到 Excel 中,但这不起作用。

编辑:添加额外的问题信息

这是我在 Visual Studio 中的内容
公开课形式1

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

结束类

这是我在 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’:
对象变量或未设置 block 变量”

当我调试时,它会将我带到以下行:
"iMsg = CreateObject("CDO.Message")"

干杯,
——耶利米·坦通科

最佳答案

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

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

关于visual-studio - 找出与 VB(MSVisualStudio 2005) 和 VBA(Excel) 的不同之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com