【最大10000ポイント】当たる!!質問投稿キャンペーン!

Excel VBAを使い、Excel表のデータをBeckyに移したく、下記のVBAプログラムを作ったのですが、BCCだけBeckyに入りません。どのようにしたらよいでしょうか。またExcel表の本文の改行がBeckyのメール文に入ると無視されてしまいます。BCCと本文の改行、この2点について教えていただけると大変ありがたいです。よろしくお願い致します。

Sub test()
strTO = Range("A1")   ’宛先アドレス
strCC = Range("A2")   ’ CCアドレス
strBCC = Range("A3")  ’BCCアドレス
strSubject = Range("A4") ’タイトル文
strBody = Range("A5") ’本文
Shell "C:\Program Files (x86)\RimArts\B2\B2.exe mailto:" & strTO & "?cc=" & strCC & "?bcc=" & strBCC & " ?&subject=" & strSubject & "&body=" & strBody, vbNormalFocus
End Sub

A 回答 (1件)

私自身Beckyを使用したことが無いので間違っていたらごめんなさい。



> BCCだけBeckyに入りません。
http://webcache.googleusercontent.com/search?q=c …
https://oshiete.goo.ne.jp/qa/4148215.html
リンク先をみると仕様の様です、上のリンクの回答ではATML Plug-In の SetHeader() 関数というのもを使用すれば良いとなっています。(10年も前の情報なので今有効かは不明です)

> Excel表の本文の改行がBeckyのメール文に入ると無視されて
これはセル内の改行の話ですよね?
セル内の改行コードはLFのはなので、CRLFに置換すれば良いと思います。

"&body=" & strBody

"&body=" & Replace(strBody, vbLf, vbCrLf)
    • good
    • 0
この回答へのお礼

早速のご対応どうもありがとうございます。今日どうゆうわけか急にVBE(VBAの編集モード)に入れなくなっていて(初めての現象。未だ未解決)、確認が遅くなりました。職場のパソコンで「本文の改行」についてやってみたのですが、残念ながら変わりませんでした(いずれもExcelの改行部分がBeckyメール本文ではワンスペース)。更にご教示いただけることがあればお願いできるとありがたいです。BCCについてはご教示いただいた以前の説明をよく読んで挑戦してみます。

お礼日時:2018/08/03 18:33

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcel : VBAからBecky!を介してメイルを発送する

ExcelのVBAからBecky!を介してメイルを発送しようとしています。以下はBecky!の関連web siteから持ってきたコードです。しかし、これだとメイルを書く状態、あるいは送信箱に格納するところまでは行くのですが、メイルが発送されません。発送するには自分で「受信箱から送信」などのメニューを実行する必要があります。どうしたらマクロの実行だけでメイルを発送させることができるか教えてください。
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
Set mapiSession = CreateObject("MSMAPI.MAPISession")
Set mapiMessages = CreateObject("MSMAPI.MAPIMessages")
mapiSession.SignOn
With mapiMessages
.SessionID = mapiSession.SessionID
.Compose
' .AttachmentPathName = ActiveWorkbook.FullName
.RecipAddress = ActiveSheet.Range("hoge@mail.com")
.MsgSubject = "シート"
.MsgNoteText = "abcdefghijklmnopqrstuvwxyz"
' .Send (False)
.Send (True)
End With
mapiSession.SignOff
End Sub

ExcelのVBAからBecky!を介してメイルを発送しようとしています。以下はBecky!の関連web siteから持ってきたコードです。しかし、これだとメイルを書く状態、あるいは送信箱に格納するところまでは行くのですが、メイルが発送されません。発送するには自分で「受信箱から送信」などのメニューを実行する必要があります。どうしたらマクロの実行だけでメイルを発送させることができるか教えてください。
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
Set mapiSession = CreateObject("MSMAPI...続きを読む

Aベストアンサー

こんばんは。

>それだとメイルを書く状態、あるいは送信箱に格納するところまでは行くのですが、メイルが発送されません。

私は、どのメーラーもセキュリティがあって、同じだと思っていました。コードの中の、' .Send (False) と .Send (True)を入れ替えたらどうなるのでしょうか? False にすると、ダイアログボックスを待たないで送信すると、MSDN には書かれていましたが、試していないので分かりません。

その前に、私はVBAで、メーラーを経由して送ることは考えたことがありませんね。ふつうは、Officeだったら、SendMail などを使うのではないでしょうか?

最近は、Excel VBA ユーザーは、もっぱら BSMTP.DLL のほうを勧めているようですが。

参考URL:http://www.hi-ho.ne.jp/babaq/bsmtp.html

QVBAでBeckyメールを起動したい

開いてるファイルのA1セルのデーターを件名にして同じ場所にある別ファイルを添付、Beckyメールを起動したいのですが?

Aベストアンサー

こんばんは。

rimarts の掲示板で、以下に出てくるのですが、結果的には、Beckyは使っていないようです。MAPIだけです。こちらの方が簡単です。

http://www.rimarts.jp/b2board/b2board.cgi?ol=200306&tree=r18086

コードは、[18105] Re3:EXCELからの送信 からです。

もちろん、規定のプログラムで、Beckyを選択しているでしょうから、それで起動は可能です。

QExcelVBAでメールを作成してメーラーを起動するプログラムを作って

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全部つながってしまいます。

メール本文でダブルコーテーションなしにして元の改行を入れるにはどうしたらいいのでしょうか?

(2)
bodyの本文が長いとエラーになってしまい、
メーラーが起動されません。
2千文字くらいしか入らないみたいです。

入れなければならない文言が決まっているので、
文章の文字数を減らすことはできません。

ダブルコーテーションは消して、
改行をそのまま入れて、
文章の文字数はそのままで、メーラーからを送るにはどうしたらいいか何日か悩んだのですが解決できません。

ご教示お願いします。

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全...続きを読む

Aベストアンサー

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp, ary

  On Error GoTo errHandler

  tmp = Selection.Value
  If IsArray(tmp) Then
    ReDim ary(1 To UBound(tmp))
    For i = 1 To UBound(tmp)
      ary(i) = Join(Application.Index(tmp, i, 0), "")
    Next
    Arg = Join(ary, vbLf)
  Else
    Arg = tmp
  End If
  
  '既定メーラー取得(WinXP)
  With CreateObject("WScript.Shell")
    sPath = .ExpandEnvironmentStrings(.RegRead(HKEY))
  End With
  sPath = Replace$(Replace$(sPath, """%1""", ""), "%1", "")
  Flg = InStr(1, sPath, "thunderbird", vbTextCompare)
  
  If Flg Then
    'thunderbirdだと文字化けしたのでUTFエンコード
    With CreateObject("ScriptControl")
      .Language = "JScript"
      Arg = .CodeObject.encodeURI(Arg)
    End With
  Else
    '簡易的にSJISエンコード
    b = StrConv(Arg, vbFromUnicode)
    Arg = ""
    For i = 0 To UBound(b)
      Arg = Arg & "%" & Right$("0" & Hex$(b(i)), 2)
    Next
  End If
  
  Arg = "mailto:メールアドレス?" & _
     "subject=件名&" & _
     "body=" & Arg

  Shell sPath & Arg

  Exit Sub
errHandler:
  MsgBox Err.Number & ":" & Err.Description
End Sub

とりあえずwinXPで Outlook/Outlook Express/thunderbird は動きました。
他環境だったりする場合、ここ
http://jehupc.exblog.jp/9727243/
の情報が参考になると思います。

#個人的にはCDOをおすすめしますが

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp...続きを読む

Qbecky!とwindows7 MAPIについて

仕事でBeckyを使っています。
昨日PCを新調しwindows7に買い換えました。
すると、MAPIを使ったソフトウエア(Access2003)からBeckyにメールを渡せなくなりました。
自分で調べたところ、windows7はsimpleMAPIの対応を打ち切った(?)とのことで、simpleMAPIのみ対応している(?)BeckyはMAPIが動作しなくなったようでした。

MAPI DLLを差し替えるとかで改善するようですが、スキルがなくできないので困っています。

古いoffice系などで起きる状況のようですので、officeを買い換えることも考えたのですが、治るかもはっきりしないので手が出ない状況です。

どうにかbeckyをwindows7でMAPI対応ソフトと連携して使うことはできないでしょうか。

やはり、お金をかけずに対応するにはメールソフトを変更するしかないのでしょうか。
できましたら、ベッキーに似たWindows7のMAPI対応のメールソフトを教えていただけたらうれしいです。
とりあえず、thunderbirdに乗換えを検討していますが、重いそうなので大量のメールを扱う為それも困るなあと思っています。

以上2点、ご回答よろしくお願いいたします。

(自分で調べたところは少々自信がないです・・・)

仕事でBeckyを使っています。
昨日PCを新調しwindows7に買い換えました。
すると、MAPIを使ったソフトウエア(Access2003)からBeckyにメールを渡せなくなりました。
自分で調べたところ、windows7はsimpleMAPIの対応を打ち切った(?)とのことで、simpleMAPIのみ対応している(?)BeckyはMAPIが動作しなくなったようでした。

MAPI DLLを差し替えるとかで改善するようですが、スキルがなくできないので困っています。

古いoffice系などで起きる状況のようですので、officeを買い換えることも考えたのですが、治...続きを読む

Aベストアンサー

単なる経験則ですが、
Windows 7に何もメールソフトがない状態でBeckyだけをインストールするとダメですが、Windows Live メールをインストールしてもかまわないのであれば以下の手順で可能かもしれません。


Windows Live メールをインストールします(試したときのバージョンは2009でした)。

念のため、[スタート]メニューの[既定のプログラム]-[プログラムのアクセスとコンピューターの既定の設定]をクリックし、[カスタム]の右端の下向き矢印をクリックし展開します。
[既定の電子メールプログラムを選択してください]の中の、[Windows Live メール]をチェックし[OK]します。

その後、[スタート]メニューの[既定のプログラム]-[既定のプログラムの設定]をクリックし、[Becky]を選択し、[すべての項目に対して、既定のプログラムとして設定する]をクリックし[OK]します。

一応この手順で使えるようになるのではないかと思いますが、この後Windows Live メールをアンインストールしても大丈夫かどうかまでは確認できていません。

単なる経験則ですが、
Windows 7に何もメールソフトがない状態でBeckyだけをインストールするとダメですが、Windows Live メールをインストールしてもかまわないのであれば以下の手順で可能かもしれません。


Windows Live メールをインストールします(試したときのバージョンは2009でした)。

念のため、[スタート]メニューの[既定のプログラム]-[プログラムのアクセスとコンピューターの既定の設定]をクリックし、[カスタム]の右端の下向き矢印をクリックし展開します。
[既定の電子メールプログラムを選択して...続きを読む

Qエクセル上のメールアドレスをクリックしたときにベッキーを

エクセル上のメールアドレスをクリックしたときにベッキーの送信ウィンドウを立ち上げたいのですが以前使っていたアウトルックが立ち上がります。なんとかならないものでしょうかよろしくお願いします。

Aベストアンサー

インターネットで通常使うプログラムにoutlookが設定されているためです。
インターネットエクスプローラを起動します。
メニュー[ツール]→[インターネットオプション]→[プログラム]タブを開いて[電子メール]の部分をリストボックスからBeckyを選択して[適用]ボタンをクリックすれば大丈夫だと思います。

QVBでメールを起動させるには・・・

VBでメールを起動させたいのですが、現在のところShellを使って絶対パスで指定して起動させているのですが、それでは他の人が使った時にエラーがでてしまうので、相対パスの取得の仕方をおしえていただけないでしょうか?よろしくお願いします。

Aベストアンサー

sub Command1_Click()
Dim IE As Object
Set IE = CreateObject("internetexplorer.application")
IE.Visible = False
IE.navigate ("mailto:アドレス?subject=件名&body=本文")
End sub

これでどうでしょう?
邪道かな・・・

QBecky! Ver2の使い方

Becky! Ver.2 の入力方法で質問です。
一行の文字数を設定して自動改行で入力
できるようにしたいのですが、どうすればいいでしょうか?

Aベストアンサー

ツール→全般的な設定→エディタ、で、
自動整形桁位置をお好みの数字に合わせてみてください。

QBecky!で入力時の改行がおかしくなる

メーラーはBecky!を長いこと使用しています。

たまに起こる現象なのですが、
メールの文章を打っているときに漢字変換をしますよね?
そのとき漢字を選んで確定ボタンを押すと、メールの文も改行されてしまうときがあるのです。通常でいえば確定ボタンを2度押したような状態です。

たとえば、
「私はこれから東京に行きますので、宜しくお願いします」という
文章を入力した場合、通常では1行(途中改行なし)で入力できます。
ところがたまに、下記のようになります。


私は
これから
東京に
行きます
ので、
宜しく
お願い
致します。


これはわたしの入力のクセで、細かくかな漢字変換をするのでこうなるんだと思います。
これはどういうことが原因なんでしょうか?

他の画面をたくさん立ち上げていたりしている状態にそうなることが多い気がするのですが、正直わかりません。

宜しくお願いします。

Aベストアンサー

パソコンの負荷が高いときに、キーの入力が遅くなっていて、キーを二度打ちした様な形になっている可能性がありますね。

キー設定をATOKに変えると、下向きカーソルキーで確定が出来るので、これを防止できますよ。

QVBA shellでメールを作成した際の変数は?

エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。

webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus

上記プログラムで、メール画面を呼び出せたのですが
送信先、件名、本文を変数から入力することはできないのでしょうか?

例えば上記例で言うと、to=の後の「アドレス」を変数にしたいのです。

例えば上記のプログラムの前に
アドレス=○○@yahoo.co.jp
のように、変数宣言をしても、出てきた送信画面では「アドレス」のまま、固定値のままなのです。

メール作成画面にデータを渡す際、変数の使用をする方法はあるのでしょうか?

エクセルVBAから、shellメソッド?を使い、サンダーバードのメール作成画面を呼び出し
送信先、件名、本文はワークシートから持ってくるというプログラムを作りたいです。

webを調べた結果、自分にもできそうなのはshellでのメール作成画面の呼び出しだったので
以下のプログラムをテストしてます。

Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose ""to="" アドレス "",subject=件名,body=本文""", vbNormalFocus

上記プログラムで、メール画面を呼び出せたのですが
送信先、件名...続きを読む

Aベストアンサー

Shell関数のコマンドに限らず、VBAコード内で文字列と変数をつなぐ時は

"文字列" & hensuu1 & "文字列" & hensuu2 & "文字列"

..のように、
文字列は『"』(ダブルクォート)で括り、
変数は『"』で括りません。
文字列と繋ぐ時は『&』 で繋ぎます。

文字列内に『"』ダブルクォートそのものを使いたい時は 『""』 2個重ねる事で『"』になります。

なので
  Dim アドレス As String
  Dim 件名 As String
  Dim 本文 As String
  アドレス = "xxxxx"
  件名 = "yyyyy"
  本文 = "zzzzz"
  Shell """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose to=" & アドレス & ",subject=""" & 件名 & """,body=""" & 本文 & """", vbNormalFocus

..こんな感じになります。

少し整理するなら
  Dim sPath As String
  Dim Mailad As String
  Dim Subjct As String
  Dim Bodyst As String

  sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
  Mailad = "アドレス"
  Subjct = "件名"
  Bodyst = "本文"
  Shell sPath & "to=" & Mailad & "," & _
         "subject=""" & Subjct & """," & _
         "body=""" & Bodyst & """"

..みたく。

また、
http://oshiete.goo.ne.jp/qa/5977178.html?order=asc
こちらも参考にすると良いかもしれません。
その場合、 Sub try_3 の最後の箇所
>  Arg = "mailto:メールアドレス?" & _
>     "subject=件名&" & _
>     "body=" & Arg
>  Shell sPath & Arg

ここを変数で対応させたいなら以下のように変更です。

  Dim Mailad As String
  Dim Subjct As String
  Mailad = "アドレス"
  Subjct = "件名"
  Arg = "to=" & Mailad & "," & _
     "subject=""" & Subjct & """," & _
     "body=" & Arg
  Shell sPath & Arg

Shell関数のコマンドに限らず、VBAコード内で文字列と変数をつなぐ時は

"文字列" & hensuu1 & "文字列" & hensuu2 & "文字列"

..のように、
文字列は『"』(ダブルクォート)で括り、
変数は『"』で括りません。
文字列と繋ぐ時は『&』 で繋ぎます。

文字列内に『"』ダブルクォートそのものを使いたい時は 『""』 2個重ねる事で『"』になります。

なので
  Dim アドレス As String
  Dim 件名 As String
  Dim 本文 As String
  アドレス = "xxxxx"
  件名 = "yyyyy"
  本文 = "zzzzz"
  Shel...続きを読む


人気Q&Aランキング