dポイントプレゼントキャンペーン実施中!

自分が持っている電子メールが2種類あって、1つはちゃんとメールサーバからメールを受信できるアドレスと、
もう1つは転送用のアドレスで名前だけで実体の無いアドレスがあります。
そのため、後者のアドレスで送信したい場合に前者のメールサーバを利用して、
Outlookのツール⇒電子メールアカウント⇒でアカウント情報の名前、電子メールの部分を後者のものに置き換えて送信していました。
しかし、このやり方が手間が掛かるのと、元に戻し忘れたり等いろいろ不便でした。

そのため、OutlookのVBAのユーザーフォームを使用したりして簡単にアカウント情報を変更したりしたいのですが、
アカウント情報の名前、電子メールの情報を取得するVBAのオブジェクトが良く分かりませんでした。
ご存知の方が居られたら教えていただけませんでしょうか。
宜しくお願いします。

A 回答 (2件)

訂正補足:


お分かりになっているとは思うのですが、
>Set MyMail = MyOl.CreateItem(0)
MyOl は、Application のことで、Outlook VBAの中では、
Application.CreateItem(0)
に置き換えてください。
    • good
    • 0

こんにちは。



正直なところ、Outlook VBAは、ユーザー環境の違いなど確認できなくて、コードを提示しても、ズバリでないとが多く、おまけに、セキュリティでブロックされることがあって、面倒なのです。多くのVB系のプログラマは、あまりOutlook.Application のコードの開発はしません。ですから、以下は、参考程度にしてください。

>Outlookのツール⇒電子メールアカウント⇒でアカウント情報の名前、
>電子メールの部分を後者のものに置き換えて送信していました。
(メールアカウントは、MP3などのことを指すとは思いますが、メールアドレスか、@ 以下の名称で、アカウントは取れると思います。)

Sub Test1()
  Dim MyNMSpace As NameSpace
  Dim MyFolder As MAPIFolder
  Dim i As Integer
  Dim mName As String
  Dim mAddress As String
  
  Set MyNMSpace = Application.GetNamespace("MAPI")
  'フォルダの名称は、実情に合わせてください。
  Set MyFolder = MyNMSpace.Folders("個人用フォルダ").Folders("受信トレイ")
  For i = 1 To MyFolder.Items.Count
    Set obj = MyFolder.Items.Item(i)
    
    With MyFolder.Items(i)
      mName = .SentOnBehalfOfName
      mAddress = .SenderEmailAddress
    End With
    If MsgBox("Name: " & mName & vbCrLf & _
       "Mail Address: " & mAddress & String(2, vbCrLf) & _
       "Next? ", vbYesNo) = vbNo Then Exit For
  Next i
End Sub

実際に、名前とアドレスを取得してもどうしようもないのですが、この後に、CreateItemを使います。

例:
Set MyMail = MyOl.CreateItem(0)

With MyMail
 .To = "新メールアドレス"
 .Subject = "タイトル"
End With

この後は、ヘルプで確認してください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!