エクセルVBAで使って、自動メール送信は出来るでしょうか?

名簿一覧のワークシートには氏名とメールアドレスが記入されていますが、VBAによってすべての人にメールを送信することが出来るでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

プロバイダから特に指定されていなければ、ポート番号は「25」です。




> また、実際には家庭内でLAN接続をしているため、…

プロバイダのSMTPサーバ名を指定してください。
    • good
    • 0
この回答へのお礼

メールの送信できました。
大変感激しました。
本当に有り難うございます。

お礼日時:2001/04/07 18:17

できますよ。



いくらでもやりかたはありますが、簡単なのは「メール送信用」と
銘打たれているDLLやCOMを使うことです。

検索サイトで

  VBA メール送信

とでもやれば、山のようにヒットします。

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



http://www.vector.co.jp/soft/win95/prog/se154742 …

なんて良いんじゃないでしょうか。
特に前者は、

http://www.hi-ho.ne.jp/babaq/vbtips.html

にサンプルのコードも載っていることだし。

この回答への補足

エクセルとはべつのDLLが必要なんですね。

http://www.hi-ho.ne.jp/babaq/bsmtp.html から
bsmtp.dll をインストールして動かしてみました。

次に、つまずいたのが、サンプルプログラムのSMTPサーバ名の設定というところです。

>szServer = "your smtp" ' SMTPサーバ名。
> 'タブで区切ってポート番号を指定できます。

プロバイダのSMTPサーバ名は分かるのですが、ポート番号が分かりません。
また、実際には家庭内でLAN接続をしているため、HOSTのIPアドレス出よいのでしょうか、またポート番号はどうなるのでしょうか。

補足日時:2001/04/07 15:44
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

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

QExcelで作った名簿のメアドに一斉送信は出来ますか?

Excelでサークルのメンバーリスト(約30名)を作っています。

今度、メンバーへの報告事項などを一斉送信したいと考えています。

そこで、一々Excelからメアドをコピペしていくのも面倒なのでまとめて送信する方法は無いでしょうか?

ちなみに、送るときは「ヤフーのフリーメール(ネット上のヤフーHPから送信)」か「独自ドメインのThunderBird」「独自ドメインのアウトルック」のいずれかになります。

素人の為、書いている内容の意味がご不明の場合はご指摘ください。

よろしくお願いします。

Aベストアンサー

http://2020hindsight.cocolog-nifty.com/blog/2008/09/excel_ba93.html
で紹介してるようなやり方は如何でしょうか?

Qデータ参照して名簿の氏名に番号を振りたいのです。

エクセルのファイルが二つあります。
No.1 50音順の全ての会員名簿
No.2 当月の会員整理番号つき名簿(整理番号は毎月変わります。この名簿には、全ての会員が載っているわけではありません)

No.1の50音順名簿には、A列が空欄、B列がカナ氏名、C列が漢字氏名になっています。(1行目はタイトル行で、2行目以降に氏名が入っています)

No.2の名簿を参照して、1の50音順名簿のA列に「当月の会員整理番号」を自動で入力するようにしたいのです。

例えば、50音順名簿の2行目は鈴木一郎さんだとします。今月の彼の番号はNo.2の名簿によると33番だとします。その場合、50音順名簿のA2セルには33と表示させたいのです。(もし、No.2の名簿に鈴木一郎さんの名前がない場合は、空欄として表示したいのです)

このデータを印刷することで、50音順名簿から整理番号を確認するのが大変楽になります。

VLOOKUP関数を利用しようと思いましたが、私の方法が悪かったのでしょう、エラーになってしまいました。
自動的に入力されるようにしたいので、改めてセルに数値を入力したくはないのですが、いい方法はあるでしょうか?

No.2の名簿ファイルは、データをコピーして、No.1の50音順名簿の別シートに貼り付けても構わないと思います。

よろしくお願いします。

エクセルのファイルが二つあります。
No.1 50音順の全ての会員名簿
No.2 当月の会員整理番号つき名簿(整理番号は毎月変わります。この名簿には、全ての会員が載っているわけではありません)

No.1の50音順名簿には、A列が空欄、B列がカナ氏名、C列が漢字氏名になっています。(1行目はタイトル行で、2行目以降に氏名が入っています)

No.2の名簿を参照して、1の50音順名簿のA列に「当月の会員整理番号」を自動で入力するようにしたいのです。

例えば、50音順名簿の2行目は鈴木一郎さんだ...続きを読む

Aベストアンサー

データの配置が分からないので回答しづらいのですが、No.2シートのデータが左側の列に検索キーとなる(?)、漢字氏名、右側の列に当月整理番号が入っていないと、VLOOKUP関数は使えません。

もしそれが原因でエラーとなっているならMATCH関数で鈴木一郎さんの行番号を求めて、INDEX関数で当月整理番号を取り出す方法も考えられます

No.2シートのA列が当月整理番号、B列が漢字氏名だとして、No.1シートのA2セルに
=IF(ISNA(MATCH(C2,NO2!$B$1:$B$100,0)),"",INDEX(NO2!$A$1:$A$100,MATCH(C2,NO2!$B$1:$B$100,0)))

なおこのような質問ではNo.2シートのデータの並びも書いてもらうと助かります。そうでないと「もし○○のとき」の連続になります。

Q複数シートの名簿から重複する氏名を探知する方法

お世話になります。
エクセルの操作方法を教えてください。

ここにとある名簿があるとします。4種類あります。
とりあえず、4種類の名簿をひとつのファイルにまとめます。
(シートは別々とします)

さて、この4種類の名簿シートの中で、
4種類すべてに名前が登場する人物がいたら、それを特定したいと思います。

どんな方法を使えばいいでしょうか?


質問を簡単にするために、以下を定義します。
4種類の名簿は全部構成が同じものとします。
また氏名の入力も同じフォーマットであるとします。
具体的にいえばA列に

漢字姓(全角スペース)漢字名

が入っているとしましょう。

漢字姓(全角スペース)漢字名が完全一致するものだけを「一致」とします。
漢字の入力間違いや、全角スペースの入れ忘れによる部分一致は「一致」とはみなさないもの、とします。

作業のためにシートをコピーしたり、作業のために一時作業シートに4つの名簿を全部コピーするのはかまわないとします。

関数だけで実行する方法を教えてください。

よろしくお願いします。

Aベストアンサー

1つのシートでは名前はユニーで、
4つのシート名が、Sheet1,Sheet2,Sheet3,Sheet4だとして、

Sheet1のB1に
=COUNTIF(A:A,A1)+COUNTIF(Sheet2!A:A,A1)+COUNTIF(Sheet3!A:A,A1)+COUNTIF(Sheet4!A:A,A1)
と記入して、下にコピペします。

計算結果が4になるものは、4シートすべてに同じ名前があります。

Qエクセルで作成した名簿の中から抽出したデータのみ別のブックに一覧作成し

エクセルで作成した名簿の中から抽出したデータのみ別のブックに一覧作成したいのです。
シート毎に個人情報を入力してますが、同時に別ブックにて氏名、住所、連絡先のみを一覧にしたいです。
個人情報のシートは
ブック名「顧客情報詳細」の氏名欄がA6をブック「一覧表」のA1に。
住所はJ6→B1  連絡先J8→C3  といった具合です。

教えていただけないでしょうか? 
宜しくお願い致します。

Aベストアンサー

一例です。
(1)一覧表ブックを開く→Sheet1タブ上で右クリック→コード表示→VBE(右上画面)に以下のコードを貼り付け
(2)コード内の「******」に顧客情報詳細ブックのパス名を設定→alt+F4キー押下(VBE画面終了)し、alt+F8キー押下→マクロを選択して実行

◎サンプルコード表
Sub 一覧表を作成()
Application.ScreenUpdating = False
myBook = "C:\***********\顧客情報詳細.xls"
i = 0
With Workbooks.Open(myBook)
For Each k In .Worksheets
i = i + 1
Sheet1.Cells(i, 1) = .Sheets(k.Name).Range("A6")
Sheet1.Cells(i, 2) = .Sheets(k.Name).Range("J6")
Sheet1.Cells(i, 3) = .Sheets(k.Name).Range("J8")
Next
.Close False
End With
Application.ScreenUpdating = True
End Sub

一例です。
(1)一覧表ブックを開く→Sheet1タブ上で右クリック→コード表示→VBE(右上画面)に以下のコードを貼り付け
(2)コード内の「******」に顧客情報詳細ブックのパス名を設定→alt+F4キー押下(VBE画面終了)し、alt+F8キー押下→マクロを選択して実行

◎サンプルコード表
Sub 一覧表を作成()
Application.ScreenUpdating = False
myBook = "C:\***********\顧客情報詳細.xls"
i = 0
With Workbooks.Open(myBook)
For Each k In .Worksheets
i = i + 1
Sheet1.Cell...続きを読む

QエクセルVBAでメール送信

エクセルのワークシートから、メニューの、「ファイル」、「送信」、「あて先」で現在のシート記載事項をメール本文として送信できますが、その際、ワークシート上のオブジェクトを自動で削除するためにはどうしたらよいでしょうか?

やりたいことは、ワークシート上のドロップダウン等で選んだ定型の文言(ドロップダウン操作により、自動的にシート上に表示されます。)だけを任意のアドレスにメール送信したいということです。現状ではドロップダウン自体やボタンまでメールに添付され、手動で削除しなくてはなりません。

Aベストアンサー

>「ファイル」、「送信」、「あて先」で現在のシート記載事項をメール本文
> として送信すると同じように...

参考URL: http://oshiete1.goo.ne.jp/kotaeru.php3?q=1546306

参考URLのスレによると、この機能が使えるかどうかは環境依存するようです。
ご自分の PC でだけ使用する前提ですか?

消極的な逃げの手段になりますが、こんな感じでは?.....

Sub Sample()
  
  If Application.MailSystem <> xlMAPI Then
    MsgBox "この機能を使用するためには MAPI対応のメーラーが必要です。", vbCritical
   Else
    ' Copy 完了後 Activesheet は新規ブックの方に変わります
    ActiveSheet.Copy
    ' ここで不要なものを削除するなど必要な処理を行う
    With ActiveSheet
      ' コントロールやシェープ等の削除
      .DrawingObjects.Delete
      ' 入力規則の削除
      .Cells.Validation.Delete
      ' A 列の削除
      .Columns(1).Delete
    End With
    ' 念のため
    ActiveWindow.Activate
    ' 逃げの一手... [メール宛先] ショートカットキー送信
    SendKeys "%FDM", True
  End If

End Sub

調べた限り、VBA からこの機能を呼び出すことはできないみたいです。

>「ファイル」、「送信」、「あて先」で現在のシート記載事項をメール本文
> として送信すると同じように...

参考URL: http://oshiete1.goo.ne.jp/kotaeru.php3?q=1546306

参考URLのスレによると、この機能が使えるかどうかは環境依存するようです。
ご自分の PC でだけ使用する前提ですか?

消極的な逃げの手段になりますが、こんな感じでは?.....

Sub Sample()
  
  If Application.MailSystem <> xlMAPI Then
    MsgBox "この機能を使用するためには MAPI対応のメーラーが必要です...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報