• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELの一部のシートのみを添付ファイルとしてメール送信する方法?)

EXCELの一部のシートのみを添付ファイルとしてメール送信する方法

このQ&Aのポイント
  • EXCELでシートのみを添付ファイルとしてメール送信する方法を考えています。具体的なイメージとしては、シート「メール送信」のA1セルにシート「5」のA1セル(売上)をリンクし、シート「メール送信」のB1セルあたりにコマンドボタン「メールを送信する」を配置して、添付されるシートには数式ではなく、値としてデータが挿入されている運用方法です。
  • BASP、SendMailメソッド、アドインなど、様々な方法がありますが、「シートのみを添付ファイルで送信」という具体的な実例が見当たらず困っています。VBAを使用することで解決する可能性がありますが、他にも良い方策があれば教えて頂きたいです。
  • EXCELで一部のシートのみを添付ファイルとしてメール送信する方法を探しています。シート「1」からシート「30」までのシートがあり、その中からシート「メール送信」のみを添付ファイルにする方法を教えてください。VBAを使用する方法や他の良い方策があれば教えて頂きたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Alpha-j
  • ベストアンサー率66% (18/27)
回答No.1

私が現在仕事で使っているマクロを以下に記載します。メラーはOutlook Express です。マクロ作成方法等はご存知ですか? Sub Send_Mail_With() '**************************************************************** 'あるリストを担当者ごとに分けて添付して担当者の電子メールに送る '**************************************************************** '1-1. 準備 Current_Directory = ThisWorkbook.Path & "\" Active_Book_Name = ActiveWorkbook.Name Active_Sheet_Name = ActiveSheet.Name Application.SheetsInNewWorkbook = 1 '<-- 作成するBookにあるシート数を1枚にする Workbooks(Active_Book_Name).Worksheets(Active_Sheet_Name).Activate '****************************************************************************************************** '1-2.電子メールの用意 Set objMS = CreateObject("CDO.Message") objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'SMTPサーバIPアドレス objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "XXX.XXX.XXX.XX" 'Type of authentication, NONE=0, Basic (Base64 encoded)=1, NTLM=2 objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '電子メールアカウント名 objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "nnnnnn" '電子メールパスワード 'objMS.Configuration.Fields.Item _ '("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pppppp" objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objMS.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False objMS.Configuration.Fields.Update '****************************************************************************************************** '2. 担当者(列P)、客先(列B)、業者(列D)ごとに並べ替え Worksheets("あるリスト").Activate ActiveSheet.AutoFilterMode = False Range(Cells(1, 1), Cells(Cells(1, 2).End(xlDown).Row, 31)).Sort Key1:=Range("P2"), Order1:=xlAscending, _ Key2:=Range("B2"), Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal '3. 特別なメッセージを入力する。 Special_Message = InputBox("特別なメッセージがあれば入力してください", vbOKCancel) '4. 担当者が変わるまで読み込み、各担当者のシートを作る pgyou = 2 rgyou = 2 Do Until Cells(rgyou, 2) = "" If Cells(rgyou, 16) <> Cells(rgyou + 1, 16) Then '担当者が次行と同じか? '4-1.担当者名シート追加 page_mei = Cells(rgyou, 16) Worksheets.Add.Name = page_mei Worksheets(page_mei).Move After:=Worksheets(Worksheets.Count) '4-2.ヘッダーをコピー Worksheets("あるリスト").Rows(1).Copy Worksheets(page_mei).Rows(1).Select ActiveSheet.Paste '4-3.値をコピー Worksheets("あるリスト").Activate Range(Cells(pgyou, 1), Cells(rgyou, 30)).Copy Worksheets(page_mei).Activate Cells(2, 1).Select ActiveSheet.Paste pgyou = rgyou + 1 End If rgyou = rgyou + 1 Worksheets("あるリスト").Activate Loop '6. 担当者が変わったら新しいBookを作る rgyou = 2 Workbooks(Active_Book_Name).Worksheets("あるリスト").Activate Do Until Cells(rgyou, 2) = "" Cells(rgyou, 16).Select If Cells(rgyou, 16) <> Cells(rgyou + 1, 16) Then tantousha = Cells(rgyou, 16) New_File_Name = "リスト(" & tantousha & "分).xls" Full_File_Name = Current_Directory & New_File_Name If Dir(Full_File_Name) <> "" Then Kill (Full_File_Name) End If Workbooks.Add ActiveWorkbook.SaveAs Filename:=Full_File_Name Workbooks(Active_Book_Name).Worksheets(tantousha).Activate Cells.Copy Workbooks(New_File_Name).Activate Cells.PasteSpecial Workbooks(New_File_Name).Save Workbooks(New_File_Name).Close Workbooks(Active_Book_Name).Worksheets(tantousha).Activate '7. Book を担当者電子メールに添付して送る To_Address = Trim(Cells(2, 28).Value) ans = MsgBox(To_Address, vbYesNo) If ans = vbNo Then GoTo TUGI '常時送るCCの人 Cc_Address = "bbbbb@kkkkk.co.jp;" objMS.attachments.DeleteAll '前の添付をクリアしないと追加になってしまう objMS.To = To_Address If Trim(Cc_Address) <> "" Then objMS.Cc = Cc_Address objMS.From = "suzuki@urbancom.co.jp" objMS.Subject = "シート貴殿の分" teikei = "今月のシートです" & vbCrLf _ If Special_Message <> "" Then objMS.TextBody = teikei & Special_Message & vbCrLf & Now Else objMS.TextBody = teikei & Now End If objMS.AddAttachment Full_File_Name objMS.Send End If '8. 次の担当者分を処理 TUGI: Workbooks(Active_Book_Name).Worksheets(Active_Sheet_Name).Activate rgyou = rgyou + 1 Loop Set objMS = Nothing End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Alpha-j
  • ベストアンサー率66% (18/27)
回答No.2

o_olllsig さん マクロは完成しましたか?

noname#161400
質問者

お礼

ああ・・・詳述なご回答を頂けてました。 不慣れなものでなぜか締め切ったあとにAlpha-jさんの詳述なマクロ例を発見しました・・・>< さっそく頂いたご回答をもとに実施してみます!

noname#161400
質問者

補足

レスありがとうございます。 すっかり質問した日より日数がたってしまいました>< 申し訳ありません。 じつはまだ着手しておらず・・・とほほ。 いったん質問を締めさせてもらいます。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel(2003)で、メール送信したい

    あらかじめ決定(固定)した(A)送信先と(B)題名に、自分自身(.xls)を(C)添付ファイルとして送信する方法を探っています。 (1)セルでハイパーリンクを使う方法  (A)(B)は可ですが、(C)添付ファイルの指定方法がわかりません。  ?MailAddFile= や ?Attached= でもだめですよね。  添付ファイルを指定することは可能でしょうか? (2)Excelからメーラーを呼び出す方法  ファイルメニューの[送信(D)]-[メールのあて先(添付ファイル)(A)]  で添付できますが、(A)と(B)を指定する方法がわかりません。  可能でしょうか? 現在、ワークシートブックオブジェクトのSendMailメソッドを使用中ですが... 今後、  1)管理者A=各メンバーにファイルをメールかダウンロードで配布。  2)各メンバー=必要事項を記入後、運営者Bに添付送信。 したいのですが、セキュリティでマクロなど不可の環境もあるため、良い方法がないか悩んでいるところです。 ご教示いただけると助かります。

  • エクセルでメール送信

    エクセルのワークシートが複数あります。 VBAで  ActiveWorkbook.SendMail Recipients:="xxxxxx@xxx.ne.jp" とすると、ワークブックがメールに添付され送信されますよね。 これを、ワークブック全体ではなく、特定のシートだけをメールに添付して送信したいのですが・・・ 送信側はワークブックにて入力用シートでデータの入力をし、送信用のシートを完成させます。受信側では入力用シートは不要です。 すいません、このような以前にもありましたか? どなたか教えてください。お願いします。

  • エクセルVBAで、シートのみを本文として送信する方法

    エクセルのブックを送信する場合は、 ActiveWorkbook.SendMail Recipients:="***@***.com" で出来ますが、シートのみを本文として送信するのは、VBAでは出来ないのでしょうか? メニューからですと、「ファイル」→「送信」→「メールのあて先」で、シートのみを本文として送信出来るのですが…。

  • エクセルでシートを指定してメールで送信したい

    エクセル2016で、数枚のシートのブックがありそのうちの1枚のシートだけがリンクで作成される結果報告書になっており、このシートの報告書の部分だけをPDFにしてメールで送付しているのですが、この報告書の1枚だけエクセルから直接メールで送信する方法はないのでしょうか? メールソフトはOUTLOOKです。 少し調べてみたらVBAで送る方法が種々あるのですが、当方VBAはほとんど出来ないので、いろんな機能は不要なので、できるだけ簡単なコードで実現したいので質問させていただきます。 ファイルが添付されて送信メールが起動してくれば、メアドは自動でなくてもOKです。

  • エクセルの特定のシートを添付ファイルで送信したい

    こんばんは。 いつもお世話になってます。 エクセルファイルの添付方法について教えてください。 OutLook2003を使用しています。 特定のシートのみを添付ファイルとして送信したいのですが、 [ファイル]-[送信]からだとブック全体が添付されます。 OutLookExpressでは、同作業でシートのみ添付できるようですが、 OutLookでは不可能でしょうか。 シートを分割⇒保存⇒添付する という作業をもう少し簡素化できれば と思い質問させていただきました。 方法ございましたら教えていただきたいです。 よろしくお願いします。

  • エクセル 添付ファイルとして送信

    [ファイル] メニューの [送信] をポイントし、[メールの宛先 (添付ファイル)] をクリックで開いているシートをメール(OUTLOOK EXPRESS)で送信できたのですが、、[メールの宛先 (添付ファイル)] がなくなってしまいました。どうしたら復活できるのでしょうか。 よろしくお願いします。

  • VBAでメールにアクティブブックを添付したい

    EXCEL2003を使用しています。 ・アクティブブックを保存し、メールに添付 ・送信先アドレス、件名を指定 ということをVBAで行ないたいです。 調べてみた所、メール送信に関するVBAの記述としては「SendMailメソッド」を使えばいいらしいのですが、こちらは送信まで行なってしまうようです。 でも今回の場合は自動送信ではなく、上記の通り送信の直前で止めたいのです。 (本文記述と送信ボタン押下は手動) できればメニューの[ファイル]-[送信]機能ではなく、VBAで処理したいのですが…どうすればいいのでしょうか。

  • Access2003からシンプルにファイルを添付してメール送信したいと

    Access2003からシンプルにファイルを添付してメール送信したいと考えています。 こちら(http://www.site-cooler.com/kwl/asp/19.htm)を参考に、BASP21というコンポーネントを利用してACCESS上のフォームにボタンを用意してコードビルダで下記のように記述してみましたが、「コンパイルエラー:構文エラー」と表示されました。 どのように改善すれば良いのでしょうか。 ACCESS初心者の為、すみませんがご教示お願いします。 --------------------------------------------------------------------------- Private Sub コマンド0_Click() Set bobj = Server.CreateObject("basp21") bobj.SendMail() <%@ LANGUAGE = VBSCRIPT %> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "smtp.xxxx.co.jp" strTo = "xxxx@xxxx.co.jp" strFrom = "xxxx@xxxx.co.jp" strSub = "件名" strBody = "本文です。" & vbCrLf & "本文終了" strFile = "c:\text.txt" Set bobj = Server.CreateObject("basp21") result = bobj.SendMail(strServer, strTo, strFrom, strSub, strBody, strFile) If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If Response.Write ("メール送信完了") %> If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If End Sub ---------------------------------------------------------------------------

  • エクセルシートだけをメールで送信するには

    業務見積もりに電子メールに添付しています。 通常エクセルブックで作成したブックを添付しています。 お聞きしたいのが ブックの中の1つのシートだけを添付することはできないのでしょうか? 今のところ1つのシートを送ることは ファイルメニューから 送信→メールの宛先 という手段で行っていますが、エクセルのシートとして 添付できないようです。 エクセルブックの中から1つのシートだけを エクセルブックとして送る良い方法、 ご存知でしたら教えてください。

  • ExcelやWordなどのファイルから「添付してメール送信」が出来ない

    ExcelやWordファイルを開いた状態で、[ファイル]→[送信]→[メールの宛先](添付ファイル)を選んでメール送信しようとしているのですが、「メールが送信できませんでした」というエラーになってしまい送信できなくて困っています。 そのメールを「×」で消すと、[送信トレイ]にメールが残ります。 オンライン状態になっているし、[ファイル]→[送信]→[メールの宛先]を選んで送信するとそのまま送信できるので、ファイルを本文にして送信する方法だと可能のようですが、添付ファイルにすると、どうしても送信できません。 Office製品が悪いのか、設定がおかしいのかと、いろいろと探ってはいるのですが、メモ帳を添付しようとしてもダメだということがわかり、まったく解決の糸口がつかめなくなって困っていますので、どなたかご存知の方がいらっしゃいましたら、知恵を貸していただけませんでしょうか? 宜しくお願いいたします。

このQ&Aのポイント
  • 彼氏からすぐ結論に至る話をされることに悩んでいます。付き合っていく中で話をしたいのに、いつも結論になってしまっています。
  • 彼氏との会話で眠れなくなることがあります。私は付き合っていく過程を楽しみたいのに、いつも結論に至る話ばかりされてしまいます。
  • 私が彼氏に話したいのは、付き合っていく過程の話です。しかし、彼はすぐに結論に至る話ばかりをしてきて、私が伝えたいことができなくなってしまっています。
回答を見る

専門家に質問してみよう