【EXCELでBeckyからメール送信】EXCEL内のボタンを押すとOutlookが立ち上がる→新規メールにはEXCELの選択範囲テキストが入力されている→内容を確認&追記して送信というマクロを使っていました(Outlook.Application)。メーラーがBeckyに変わってしまったため、同じ処理をBeckyで実現する方法を教えてください。■備考:mailtoリンクでは本文文字数が少ないです。CDO、BASP21ではなく、Beckyを使う方法を知りたいです。(社内利用のためできるだけ前と同じフローにしたいです)

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2010/11/17 17:25:35
  • 終了:2010/11/24 16:42:44

ベストアンサー

id:Silvanus No.2

Silvanus回答回数174ベストアンサー獲得回数672010/11/18 13:44:00

ポイント1000pt

何のエレガントさもテクもないマクロですが、こんなんで宜しければ。

自分の手元の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:tskmry

id:Silvanusさん、ありがとうございます!!

詳細検証できていないのですが、だいたい動きました!

環境はWindowsXP+EXCEL2003(SP3)+Becky2.53です。

何回か試しましたが

To:入力される

Subject:入力されない

Body:入力されたりされなかったりする

という状況です。

解決を急いではいませんので、よろしくお願いします m(_ _)m

2010/11/18 16:08:54

その他の回答(1件)

id:spyglass No.1

spyglass回答回数455ベストアンサー獲得回数292010/11/17 20:09:30

ポイント100pt

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

http://www.uwsc.info/


UWSCからアプリの起動

http://excel20080504.web.fc2.com/uwsc/U2.htm


UWSC掲示板

http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi

id:tskmry

こんな便利なツールがあるのを知りませんでした。

勉強になります。

このツールは利用者の各PCにインストールが必要ですよね?

グループ内で多数のメンバで共有するエクセルなので

「これをインストールください」というのは難しいです。

2010/11/18 10:32:09
id:Silvanus No.2

Silvanus回答回数174ベストアンサー獲得回数672010/11/18 13:44:00ここでベストアンサー

ポイント1000pt

何のエレガントさもテクもないマクロですが、こんなんで宜しければ。

自分の手元の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:tskmry

id:Silvanusさん、ありがとうございます!!

詳細検証できていないのですが、だいたい動きました!

環境はWindowsXP+EXCEL2003(SP3)+Becky2.53です。

何回か試しましたが

To:入力される

Subject:入力されない

Body:入力されたりされなかったりする

という状況です。

解決を急いではいませんので、よろしくお願いします m(_ _)m

2010/11/18 16:08:54
  • id:seble
    そのマクロにOutlookが指定されているのでは?
    なら、マクロを書き換えなければならないし、
    どんなマクロか分からなければ、記述もできないかと、、、
    Outlookではなく、単に標準のメーラー、みたいなマクロなら、
    win側(IEのオプションとか)でベッキーを標準に指定するだけだろうけど、、、
  • id:tskmry
    コメントありがとうございます。

    >そのマクロに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を通してメール送信したい

  • id:Silvanus
    Beckyに関する諸機能を外部から利用できる
    "BeckyAx PlugIn"(Becky ActiveX Server)というDLLがあるんですが、
    UWSCのインストールでさえも利用者にさせられないとなると
    選択肢から外れますね…(インストールがちょっと面倒)。
    となると「外部のアプリに全く頼らずにExcel VBAのみで」という
    ご要望に実質的にはなりますかね?
    それならそれで何とかやってみます。
  • id:Silvanus
    貼り付けたマクロについて、ご要望がありましたら遠慮無くお書き下さい。
    私の能力を超えていない限り(涙)は可及的に対処いたします。
  • id:Silvanus
    ご報告有難うございます。
    流石に「ショートカットキーを出力するだけ」のショボいマクロでは
    上手く動かないPCがあってもある意味当然という感じですね…(汗)。
    近い内に、別アプローチのマクロをアップしますので、暫しお待ち下さい。
  • id:tskmry
    もろもろご回答ありがとうございました。
    終了期限になってしまいますので、質問は閉めますが
    もしよい解決がありましたらコメント欄でお知らせいただけると嬉しいです。

    id:Silvanusさんに書いていただいたマクロで
    AppWaitSecを調節すればだいたい動作できましたが
    たくさんの人に配布して利用してもらうには難しいところです。
  • id:Silvanus
    返答遅れておりません。忘れている訳ではありませんので
    今暫くお待ちいただければ幸いです。
    ひとつ伺いたいのですが、
    インストールがメチャ簡単(例えばアイコンダブルクリック1回だけ)であれば
    外部アプリのインストールも容認できますか?
  • id:Silvanus
    済みません…今迄全く気付いておりませんでしたが…私には過分な
    ポイント&いるか賞有難うございます!ご満足いただける解決方法を見付けたいと思います!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません