0

シート内の一連のアドレスに電子メールを送信する 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
4

1 に答える 1

3

現在のコード使用の効果を再現するには

mailid = Application.InputBox(Prompt:="Select Range", Type:=8)

whereType:=8は戻り値の型を指定しますRange。これはValue、選択範囲のプロパティをmailid

代わりに使用

Dim rng as Range
Set rng = Application.InputBox(Prompt:="Select Range", Type:=8)
mailid = rng.Value

rngその後、選択した範囲に設定され、使用前に検証できます

ユーザーが入力ボックスをキャンセルするなど、エラー処理を追加する必要があることに注意してください。

ユーザーが画面を操作できなくなるため、Application.ScreenUpdating = False発行する前に設定しないでください。InputBox

余談ですが、あなたのコードはDim間違った使い方をしていDimますAs
例えば

Dim oApp, oMail As Object

実際には として宣言oAppVariant、使用します

Dim oApp As Object, oMail As Object
于 2012-08-25T22:33:46.420 に答える