何のエレガントさもテクもないマクロですが、こんなんで宜しければ。
自分の手元の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掲示板
こんな便利なツールがあるのを知りませんでした。
勉強になります。
このツールは利用者の各PCにインストールが必要ですよね?
グループ内で多数のメンバで共有するエクセルなので
「これをインストールください」というのは難しいです。
何のエレガントさもテクもないマクロですが、こんなんで宜しければ。
自分の手元の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
id:Silvanusさん、ありがとうございます!!
詳細検証できていないのですが、だいたい動きました!
環境はWindowsXP+EXCEL2003(SP3)+Becky2.53です。
何回か試しましたが
To:入力される
Subject:入力されない
Body:入力されたりされなかったりする
という状況です。
解決を急いではいませんので、よろしくお願いします m(_ _)m
id:Silvanusさん、ありがとうございます!!
詳細検証できていないのですが、だいたい動きました!
環境はWindowsXP+EXCEL2003(SP3)+Becky2.53です。
何回か試しましたが
To:入力される
Subject:入力されない
Body:入力されたりされなかったりする
という状況です。
解決を急いではいませんので、よろしくお願いします m(_ _)m