Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email excel vba输入框_Email_Excel_Vba - Fatal编程技术网

Email excel vba输入框

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

我有以下excel vba代码,它将在我的工作表中通过电子邮件发送一系列地址。然而,我正在寻找可能使用一个输入框来确定我想要发送电子邮件的范围。我遇到的麻烦是让输入变成函数mailid能够理解的值。有什么建议吗

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的数组(我猜是一维的)。我建议您使用google
outlook对象模型
查找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的数组(我猜是一维数组)。我建议您使用google
outlook对象模型
查找to属性的正确格式。