何のエレガントさもテクもないマクロですが、こんなんで宜しければ。
自分の手元のPCでは失敗がありませんでしたが
少し動作が重たいPCではTo、Subject、Bodyのペイストに失敗する可能性があります。
その場合は、コメントアウトしてあるウェイトを有効にして下さい。上手く行くかも。
その辺りの安全対策も現バージョンでは全く取っておりません。
下記マクロを使用される場合、実行前に一度だけ
VBAメニューの[ツール]-[参照設定]から"Microsoft Forms 2.0 Object Library"に
チェックを入れから、ワークブックを保存して下さい。
Option Explicit Sub Test() Dim strBody As String Dim rngSCell As Range For Each rngSCell In Selection strBody = strBody & rngSCell.Value & Chr(13) & Chr(10) Next hatena_tskmry_101117 "dummy@hatena.jp", "This is a test mail.", strBody End Sub Sub hatena_tskmry_101117(strTo As String, strSubject As String, strBody As String) Const StrPathBk As String = "C:\Program Files\Rimarts\B2\B2.exe" ' Becky!実行ファイルへのフルパス On Error GoTo TrapErr1 AppActivate "Becky!" AppWaitSec 1 On Error GoTo 0 SendKeys "%mc", True AppWaitSec 1 PasteText strTo ' AppWaitSec 1 SendKeys "%s", True ' AppWaitSec 1 PasteText strSubject ' AppWaitSec 1 SendKeys "{tab}", True ' AppWaitSec 1 PasteText strBody Exit Sub TrapErr1: Shell StrPathBk AppWaitSec 3 Resume Next End Sub Function PasteText(strPaste As String) As String Dim dobj As New DataObject dobj.SetText strPaste dobj.PutInClipboard SendKeys "^v", True End Function Sub AppWaitSec(intSec As Integer) Application.Wait Now + TimeSerial(0, 0, intSec) End Sub
UWSCを使えばExcelからWindowsアプリへのアプローチが可能です。
-------------------------------------
変更されたセルの値が1ならUWSCを呼び出す例
Private Sub Worksheet_Change(ByVal Target As Range)
If Range(Target.Address).Value = 1 Then
Shell("UWSC実行ファイルまでのパス", 1)
End If
End Sub
-------------------------------------
UWSC
UWSCからアプリの起動
http://excel20080504.web.fc2.com/uwsc/U2.htm
UWSC掲示板
なら、マクロを書き換えなければならないし、
どんなマクロか分からなければ、記述もできないかと、、、
Outlookではなく、単に標準のメーラー、みたいなマクロなら、
win側(IEのオプションとか)でベッキーを標準に指定するだけだろうけど、、、
>そのマクロにOutlookが指定されているのでは?
そうです。
Outlook.Application
http://msdn.microsoft.com/ja-jp/library/ms268893%28VS.80%29.aspx
を利用して、メール送信するマクロが書かれています。
なので、既存設定を変えるだけでBecky対応は無理と思われます。
<やりたいこと>
・マクロ内で、To、Subject、Bodyを生成するのでそれをBeckyに渡したい。
・エクセルシート内のボタンを押すと、Beckyのメール作成画面が立ち上がり
To、Subject、Bodyは入力されている状態にしたい。
・CDO、BASP21のようなエクセル内から直接送信してしまうのではなく
Beckyを通してメール送信したい
"BeckyAx PlugIn"(Becky ActiveX Server)というDLLがあるんですが、
UWSCのインストールでさえも利用者にさせられないとなると
選択肢から外れますね…(インストールがちょっと面倒)。
となると「外部のアプリに全く頼らずにExcel VBAのみで」という
ご要望に実質的にはなりますかね?
それならそれで何とかやってみます。
私の能力を超えていない限り(涙)は可及的に対処いたします。
流石に「ショートカットキーを出力するだけ」のショボいマクロでは
上手く動かないPCがあってもある意味当然という感じですね…(汗)。
近い内に、別アプローチのマクロをアップしますので、暫しお待ち下さい。
終了期限になってしまいますので、質問は閉めますが
もしよい解決がありましたらコメント欄でお知らせいただけると嬉しいです。
id:Silvanusさんに書いていただいたマクロで
AppWaitSecを調節すればだいたい動作できましたが
たくさんの人に配布して利用してもらうには難しいところです。
今暫くお待ちいただければ幸いです。
ひとつ伺いたいのですが、
インストールがメチャ簡単(例えばアイコンダブルクリック1回だけ)であれば
外部アプリのインストールも容認できますか?
ポイント&いるか賞有難うございます!ご満足いただける解決方法を見付けたいと思います!