[[20121031130436]] 『メール送信時のメーラーへの入力』(kok) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『メール送信時のメーラーへの入力』(kok)
お世話になります。
メール送信のコードを書きました。

Sub メール送信()
Dim mypath As String
mypath = ThisWorkbook.Path

  ActiveWorkbook.SaveAs Filename:=mypath & "\" & Format(Date, "yyyymmdd") & "○□会社.xlsm"

    Application.Dialogs(xlDialogSendMail).Show arg1:="□△@▼×○.okinawa.lg.jp" 

End Sub

この時、メーラーのメッセージ欄(詳しい内容を記載するところ)に
ある決まった文章(例えば「今月分の報告です.....」)を自動で入力したいのですが可能でしょうか?
ご教示お願い致します。

os:vista エクセル:2007 メーラー:microsoft outlook


https://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=outlook+sendmail&perpage=10&attr=&order=&clip=-1&navi=0

 ↑
 利用できるスレがあるんですか?

 (半平太) 2012/10/31 20:22

Dialogs(xlDialogSendMail)では本文は操作できないようですね。
「CDOでメール送信」というのも見つけましたが、難解なので修行が必要です。
もうちょっと悩んでみます。
有難うございました。
 (kok)


  Sub test()
      MailForm "atesaki@abc.com", "cc@abc.com", "bcc@abc.com", "件名", "本文"
  End Sub

  Private Sub MailForm( _
      AddressTo As String, _
      Optional cc As String, _
      Optional bcc As String, _
      Optional subject As String, _
      Optional body As String)

      Dim strAddress As String
      strAddress = "mailto:" & AddressTo
      If Len(cc) > 0 Then
          strAddress = strAddress & "?cc=" & cc
      End If
      If Len(bcc) > 0 Then
          strAddress = strAddress & "?bcc=" & bcc
      End If
      If Len(subject) > 0 Then
          strAddress = strAddress & "&subject=" & subject
      End If
      If Len(body) > 0 Then
          strAddress = strAddress & "&body=" & body
      End If
      ThisWorkbook.FollowHyperlink Address:=strAddress
  End Sub

 (暇奴)

 >Dialogs(xlDialogSendMail)では本文は操作できないようですね。
 そうらしいです。

 それを使わない方向で考えるとなると、再度、仕様(やりたいこと)を明確にする必要があると思います。

 分かっているのは「決まった文章を自動で入力する」ことのみ。

 文章は何文字くらあるのか。
 決まり文句に、アドリブで追加手入力するのか、しないのか。
 手入力が不要だとして、送信まで自動でやっちゃうのか、目で確認してから送信するのか。
 添付ファイルを自動で付けるのか、手作業で付けるのか。

 ※ あのー、私が対応できると云う訳ではありません(念の為)
    昔、簡単じゃないなぁーと思わされたことがあります。

 (半平太) 2012/11/01 14:10

   Dialogs(xlDialogSendMail)使うアイデアが一つ浮かびました。
 (姑息な方法ですが、目で確認しながらの事務なら使えるかもです)

  以下、取り合えす構想のみです。

   事前準備として「クリップボードに記憶されている文字列の貼り付け」を行うVBS(スクリプト)を書いてどこかに保存しておく。
   つまり「1秒程度後に[Ctrl+VキーをSendkeysで送りつける]と云うスクリプトを書いて置く訳です。

  VBAは、
   決まり文句をクリップボードにセット→VBSを実行→SendMailのダイアログを実行。
   そうすると、OUTLOOKが立ち上がって、本文に決まり文句が貼り付けられる、と云う塩梅です。

 当初やろうとしていたこととあまり違わないので使えるかも知れません。

 (半平太) 2012/11/01 20:50

暇奴さん
コード有難うございます。
今自宅からレスしています。
自宅と職場ではOSやメーラーの環境が違うので自宅ではテストできないのですが
職場は10日過ぎまでは繁忙期突入でテストの時間がとれません。
後ほど報告させていただきます。
(理解できていないので、そもそもテストが成りたたないかったらすみません)

半平太さん
VBSって単語は知っている程度です。

実現したい内容は
マクロボタンでメーラーを開き
添付ファイルを自動で付ける
本文を自動で入力する
本文は30文字ぐらいの決まり文句です。
時には少し付け足したり、文言を変更することもあります。
そして
内容を目で確認してから送信する。
というような事です。
ご教示いただけたら有難いです。
宜しくお願い致します。
 (kok)


 >VBSって単語は知っている程度です。

 私も大差ないです。(^^ゞ

 1.VBS(事前準備)

  下のスクリプト(3行)をメモ帳に貼り付けて、ファイル名と拡張子を「PASTE.vbs」とし、
  保存先を「エクセルファイル」と同じフォルダ内に保存して下さい。

 Set objShell = WScript.CreateObject("WScript.Shell")
 WScript.Sleep 1000
 objShell.SendKeys "^v"

 2.VBA(エクセルファイル)

 Sub メール送信()
    Dim CB As New DataObject 'ツール→参照設定→Microsoft Forms 2.0 Object Library
    Dim buf As String
    Dim myPath As String

    myPath = ThisWorkbook.Path
    ActiveWorkbook.SaveAs Filename:=myPath & "\" & Format(Date, "yyyymmdd") & "○□会社.xlsm"

    '決まり文句を作る(例)
    buf = "今月分の報告です...(" & Format(Date, "M月)")

    With CB
        .SetText buf        '決まり文句をDataObjectに格納する
        .PutInClipboard     'DataObjectのデータをクリップボードに格納する
    End With
    Shell "WScript.exe " & myPath & "\PASTE.vbs"""    'スクリプト実行

    Application.Dialogs(xlDialogSendMail).Show arg1:="□△@▼×○.okinawa.lg.jp"

 End Sub

 ※1行目のコメントに書きましたが、参照設定をしてください。
 ※初回だけ、タイミングが合わないセイなのか、失敗するかも知れません。

 (半平太) 2012/11/02 09:40

暇奴さんへ
自宅で試みてみました。
メーラーが開き件名、本文とも入力されていました。
ファイル添付がされていませんでしたが、コードの理解ができていないので
自力での加工は無理みたいです。有難うございました。

半平太さんへ
ファイル添付、本文とも実現できました。
今月から超楽ちんに送信ができます。
すばらしいです。
有難うございました。

 (kok)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.