Email excel vba输入框
我有以下excel vba代码,它将在我的工作表中通过电子邮件发送一系列地址。然而,我正在寻找可能使用一个输入框来确定我想要发送电子邮件的范围。我遇到的麻烦是让输入变成函数mailid能够理解的值。有什么建议吗Email excel vba输入框,email,excel,vba,Email,Excel,Vba,我有以下excel vba代码,它将在我的工作表中通过电子邮件发送一系列地址。然而,我正在寻找可能使用一个输入框来确定我想要发送电子邮件的范围。我遇到的麻烦是让输入变成函数mailid能够理解的值。有什么建议吗 Sub EmailActiveSheetWithOutlook2() Dim oApp, oMail As Object, _ tWB, cWB As Workbook, _ FileName, FilePath As String Application.ScreenUpdatin
Sub EmailActiveSheetWithOutlook2()
Dim oApp, oMail As Object, _
tWB, cWB As Workbook, _
FileName, FilePath As String
Application.ScreenUpdating = False
'Set email id here, it may be a range in case you have email id on your worksheet
Sheets("Sheet1").Select
mailId = Range("b4:b5").Value
'Write your email message body here , add more lines using & vbLf _ at the end of each line
Body = "Hello, it appears you have not yet filled out the transportation contact information excel sheet. This sheet was emailed to you, please complete this and send to me saved as your firstnamelastname.xls at your earliest convience." & vbLf _
& vbLf _
& "Thanks & Regards" & vbLf _
& vbLf _
& "-Ryan " & vbLf _
'通过outlook发送电子邮件
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
With oMail
.To = mailid
.Subject = "Transportation Committee Notice"
.Body = Body
'.Attachments.Add tWB.FullName
.send
End With
End Sub
复制当前代码使用的效果
mailid = Application.InputBox(Prompt:="Select Range", Type:=8)
其中Type:=8
指定Range
的返回类型。这会将所选范围的值
属性返回到mailid
交替使用
Dim rng as Range
Set rng = Application.InputBox(Prompt:="Select Range", Type:=8)
mailid = rng.Value
rng
然后设置为所选范围,并可在使用前进行验证
请注意,您应该将错误处理添加到帐户,例如用户取消输入框
在发出InputBox
之前,不要设置Application.ScreenUpdate=False
,因为这将阻止用户与屏幕交互
另一方面,您的代码错误地使用了Dim
:Dim
“在没有As
子句的情况下将变量声明为`Variant.乙二醇 实际上将
oApp
声明为变体
,使用
Dim oApp As Object, oMail As Object
复制当前代码使用的效果
mailid = Application.InputBox(Prompt:="Select Range", Type:=8)
其中Type:=8
指定Range
的返回类型。这会将所选范围的值
属性返回到mailid
交替使用
Dim rng as Range
Set rng = Application.InputBox(Prompt:="Select Range", Type:=8)
mailid = rng.Value
rng
然后设置为所选范围,并可在使用前进行验证
请注意,您应该将错误处理添加到帐户,例如用户取消输入框
在发出InputBox
之前,不要设置Application.ScreenUpdate=False
,因为这将阻止用户与屏幕交互
另一方面,您的代码错误地使用了Dim
:Dim
“在没有As
子句的情况下将变量声明为`Variant.乙二醇 实际上将
oApp
声明为变体
,使用
Dim oApp As Object, oMail As Object
克里斯-非常感谢你,我正在努力学习vba的飞行,因为我继续认识到它的所有潜力。我真的很感激你指出我犯下的令人沮丧的错误!chris,我收到一个运行时错误“数组下限必须为零”关于为什么会发生这种情况/a解决方案有什么想法吗?错误在哪一行?如果是
mailid=
那么mailid
Dim
'ed?To=mailid是调试器高亮显示的,mailid不是Dim'ed,它应该是什么?因为mailid
不是Dim
ed,它将是一个变量。将范围指定给变量后,该变量将成为基于1的二维数组(1到行,1到列)。您正在将其分配给由Outlook
创建的项目的.to
属性。我没有安装outlook,因此无法测试它,但错误表明您需要将to列表结构为基于0的数组(我猜是一维的)。我建议您使用googleoutlook对象模型
查找to属性的正确格式。chris-非常感谢,我正在努力学习vba的飞行,因为我继续认识到它的所有潜力。我真的很感激你指出我犯下的令人沮丧的错误!chris,我收到一个运行时错误“数组下限必须为零”关于为什么会发生这种情况/a解决方案有什么想法吗?错误在哪一行?如果是mailid=
那么mailid
Dim
'ed?To=mailid是调试器高亮显示的,mailid不是Dim'ed,它应该是什么?因为mailid
不是Dim
ed,它将是一个变量。将范围指定给变量后,该变量将成为基于1的二维数组(1到行,1到列)。您正在将其分配给由Outlook
创建的项目的.to
属性。我没有安装outlook,因此无法对其进行测试,但错误表明您需要将to列表结构为基于0的数组(我猜是一维数组)。我建议您使用googleoutlook对象模型
查找to属性的正确格式。