WIN2000 OfficeXpです。
エクセルのマクロを使って、マイクロソフトアウトルックのメールを作成したいのですが、
あるシートの
 A1
を件名に
 A2:D2
の範囲を本文に貼り付けるマクロはありますか?
宛先入力、送信は手動でできるように設定したいのですが。
よろしくお願いします。

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

A 回答 (3件)

こんな感じで如何でしょうか。



本文の範囲の "A2:D2"は、1セルずつ改行するのかな?
しないのなら最後から5行目の "& vbLf"を削除してください。

[ツール]-->[参照設定] で 「Miscosoft Outlook 9.0Object Library」にチェックを入れます。

Sub CreateMail()
'--------- 設定事項 ---------
  '参照設定 : Miscosoft Outlook 9.0Object Library
  Const ShName = "Sheet1"
  Const SbjAdd = "A1"
  Const BodyAdd = "A2:D2"
'----------------------------
  Dim olApp As Outlook.Application
  Dim objMail As Outlook.MailItem
  Dim Rng As Range
  Dim StrBody As String
  Set olApp = Outlook.Application
  Set objMail = olApp.CreateItem(olMailItem)
  For Each Rng In Range(BodyAdd)
    StrBody = StrBody & Rng.Value & vbLf
  Next Rng
  With objMail
    .Subject = Worksheets(ShName).Range(SbjAdd).Value
    .Body = StrBody
    .Display
  End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
完璧にできました。
これを応用いろんな設定してみます。

お礼日時:2005/04/10 21:11

MAPI APIを使えば実現できるはずです。



次の参考URLを参考にしてください。

http://www.remus.dti.ne.jp/~shenron/access/knowh …

http://support.microsoft.com/kb/163216/ja

http://www.microsoft.com/japan/msdn/office/offic …
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になります。

お礼日時:2005/04/10 21:12

詳細は、Outlook のVBAを参照してください。



>Set oApp = CreateObject("Outlook.Application")

参考URL:http://www.ken3.org/cgi-bin/group/vba_outlook.asp
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になります。

お礼日時:2005/04/10 21:11

このQ&Aに関連する人気のQ&A

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

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

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

QメールのCC.BCCとは何でしょうか?

よくメールを使う時にcc.bccと表示されているのですが
これはどういう時に使うものなのでしょうか?

Aベストアンサー

もともとは「本来の宛先」を to に指定し, cc (carbon copy) と bcc (blind carbon copy) には「本来の宛先ではないが送っておいた方がいい相手」を指定することになります. cc と bcc の違いは #1 の通りで cc では「送ったことがわかる」, bcc では「送ったことが分からない」という点にあります. ということで, 動作としては to と cc は全く同じ.

一方, bcc はメーリングリストなどで「不必要にメールアドレスを公開しない」ために用いることもあります. この場合 to, cc は指定せず bcc だけということもあります.

Qマクロ「A1の値は、セル範囲でA1:AB39の右2文字が YR と書いてあるセルの右隣の値」

よろしくお願いします
いつもgooの皆さんに大変お世話になっています
エクセルは2013です

マクロで
「A1の値は、セル範囲でA1:AB39の値(文字列)の右端2文字が YR と書いてあるセルの右隣の値」
はどういうコードになるでしょうか

例えば セル D10 の値(文字列)が、「2月合計yr」でしたら
セル A1 には 右隣のセル E10 の値を表示したいのです

右2文字は Ucase(Right(セル,2)) ですが
「セル範囲A1:AB39で、そのセルの右端2文字がYRと書いてあるセルの右隣のセル」を
探す方法が分かりません

Aベストアンサー

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c As Range
 With Range("A1:AB39")
 Set c = .Find( _
  What:="*yr", _
  After:=Range("A1"), _
  LookIn:=xlValues, _
  LookAt:=xlWhole, _
  SearchOrder:=xlByRows, _
  MatchCase:=False, _
  MatchByte:=False)
    If Not c Is Nothing Then
     c.Offset(, 1).Value = Range("A1").Value
    End If
 End With
End Sub
'//

本来、以下は省略して書くことが多いのですが、明示的に書かせていただきます。

Ucase(Right(セル,2)) ->MatchCase:=False
全角半角の違いは、MatchByte:=False
末尾のyr を探すのは、What:="*yr"  (LookAt:=xlWholeも必要)
現在のコードは1回限り After:=Range("A1") 続けるなら、ActiveCell

私は、ここのカテゴリでは、質問者さんから、答えだけ書いてりゃいいのだ、というので、みなさんから評判が悪いようです。
どなたかの回答をお待ちになっても良いかと思います。

'//
Sub SearchChars()
 Dim c...続きを読む

QCC,BCCとは?

メールの宛先の下に「CC,BCC」とありますが、それはどのような違いがあるんですか?教えてください!

Aベストアンサー

 こんにちは。

 使い分けは、複数の人に送る場合、tomrinrinさんがAさん・Bさんの二人に、同じメールをまとめて送るとしましょう。

 CCでは、tomrinrinさんが送った相手である、Aさん・Bさんに、tomrinrinさんが送った全員のアドレスが分かってしまいます。
 
 BCCでは、これを使うと、tomrinrinさんが送った全員のアドレスは内緒のまま、Aさん・Bさんに送れます。

Qエクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

単刀直入にやりたいことを述べます。

Cドライブと仮定します。3つのBOOKがあります。
それぞれ
-----
BOOK1.xls「○○Sheet」・・・(実行するファイル)
  A
1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です)
2 A2:E2・・・(コピーするセル範囲の指定)
3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です)
4 A5・・・(貼り付け先のセルの指定)
-----
BOOK2.xls「△△Sheet」・・・(コピー元ファイル)
  ABCDE
1 あいうえお
2 かきくけこ
3 ・・・・・
-----
BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)
  ABCDE
1 ・・・・・
2 かきくけこ・・・(貼り付け)
3 ・・・・・
-----
>やりたいこと
BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、
その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、
BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、
その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。

別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、
以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。
よろしくお願いします。(ちなみにエクセル2000又は2003です)

単刀直入にやりたいことを述べます。

Cドライブと仮定します。3つのBOOKがあります。
それぞれ
-----
BOOK1.xls「○○Sheet」・・・(実行するファイル)
  A
1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です)
2 A2:E2・・・(コピーするセル範囲の指定)
3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です)
4 A5・・・(貼り付け先のセルの指定)
-----
BOOK2.xls「△△Sheet」・・・(コピー元ファイル)
  ABCDE
1 あいうえお
2 かきくけこ
3 ・...続きを読む

Aベストアンサー

思われていることと違っていたらすみませんが、参考までに下記のコードをBOOK1.xlsのマクロに貼り付けて実行してみてください。
コピー先のBOOKを壊してはいけないので必ず、コピーしたBOOK等でテストしてみてください。
3つのBOOKがCドライブ直下にあり、BOOK1.xlsの参照するシートのシート名が○○Sheetであることが前提です。

メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:コピーペースト)
 ↓
名前を入力しましたら、「作成」をクリック
 ↓
Microsoft Visual Basicの画面が開きますのでSub コピーペースト()の下に次のコードをコピーして貼り付けてください。

Dim INファイル名 As String
Dim INシート名 As String
Dim IN範囲 As String
Dim OUTファイル名 As String
Dim OUTシート名 As String
Dim OUT範囲 As String
Dim 文字列 As String
Dim 検索文字 As String
Dim 文字カウント As Integer
Dim 文字数 As Integer

'○○SheetのA1にあるファイル名とシート名を取得する
文字列 = Sheets("○○Sheet").Range("A1")
検索文字 = "「"
文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1)
文字カウント = 文字カウント - 1 'ファイル名の文字数を取得
INファイル名 = Left(文字列, 文字カウント) 'INファイル名の取得
文字数 = Len(文字列)
文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得
文字列 = Right(文字列, 文字カウント)
文字カウント = Len(文字列) - 1
INシート名 = Left(文字列, 文字カウント) 'INシート名の取得
IN範囲 = Sheets("○○Sheet").Range("A2") 'コピーの範囲

'○○SheetのA3にあるファイル名とシート名を取得する
文字列 = Sheets("○○Sheet").Range("A3")
検索文字 = "「"
文字カウント = Application.WorksheetFunction.Find(検索文字, 文字列, 1)
文字カウント = 文字カウント - 1 'ファイル名の文字数を取得
OUTファイル名 = Left(文字列, 文字カウント) 'OUTファイル名の取得
文字数 = Len(文字列)
文字カウント = 文字数 - (文字カウント + 1) 'シート名の文字数を取得
文字列 = Right(文字列, 文字カウント)
文字カウント = Len(文字列) - 1
OUTシート名 = Left(文字列, 文字カウント) 'OUTシート名の取得
OUT範囲 = Sheets("○○Sheet").Range("A4") '貼り付ける位置

'A1のセルの値とA2セルの値を参照しコピー
Workbooks.Open Filename:="C:\" & INファイル名 'INファイルのOPEN
Workbooks(INファイル名).Worksheets(INシート名).Activate
Worksheets(INシート名).Range(IN範囲).Select
Selection.Copy 'コピー
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=False 'INファイルのCLOSE
Application.DisplayAlerts = True

'A3のセルの値と、A4セルの値を参照しペースト
Workbooks.Open Filename:="C:\" & OUTファイル名 'OUTファイルのOPEN
Workbooks(OUTファイル名).Worksheets(OUTシート名).Activate
Worksheets(OUTシート名).Range(OUT範囲).Select
Application.DisplayAlerts = False
ActiveSheet.Paste '貼り付け
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=True 'OUTファイルのCLOSE
Application.DisplayAlerts = True

MsgBox "コピー&ペーストが終了しました。  "
'****コピー貼り付けはここまで ****

Microsoft Visual Basicの画面を×で閉じます
 ↓
Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
先ほど名前を付けたマクロを選択して「実行」をクリック

BOOK1.xlsの参照するシート名が○○Sheetでない場合は上記のコードの○○Sheetのところを修正してください。
また、各BOOK*.xlsがCドライブ直下に無い場合は、上記コードの"C:\"のところを修正してください。

思われていることと違っていたらすみませんが、参考までに下記のコードをBOOK1.xlsのマクロに貼り付けて実行してみてください。
コピー先のBOOKを壊してはいけないので必ず、コピーしたBOOK等でテストしてみてください。
3つのBOOKがCドライブ直下にあり、BOOK1.xlsの参照するシートのシート名が○○Sheetであることが前提です。

メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:コピーペースト)
 ↓
名...続きを読む

Q「宛先多数につきBCCにて失礼します」とは何か

メールの文章で、「宛先多数につきBCCにて失礼します」というのは、どういう意味でしょうか。

Aベストアンサー

電子メールの

TO=宛て先
CC=同報(英語カーボンコピー=複写の略)
BCC=【Blind Carbon Copy】、同報先を隠しながら投函

受けた人から見れば、自分宛ではない(もしくは宛先不明)メールが自分のところに届いたので、驚くかもしれない。

また、BCCの場合は不特定多数に送る場合が多いので、「●●様」などの」敬称が省略されている場合が多い。

この場合失礼に当たらないように、「BCCにて失礼します」を一文を入れておくのがビジネスマナー。

Qマイクロソフトオフィス 2003/エクセル 起動時に セキュリティ警告(マクロ) マクロが見つからない。

こんにちは、
環境:
WindowsXP Pro SP1
Office2003

状況
あるExcelファイルを起動すると、セキュリティ警告「”**”はマクロを含んでいます。」というメッセージが出ます。
特にマクロを使っているファイルではありませんが、以前あったExcelファイルをコピーしたファイルなので、以前にあったマクロが残っているのかと予想しました。
ところが、「ツール」-「マクロ」-「マクロ」でマクロのダイアログボックスを見てもマクロが存在しません。

質問
この場合、どのように原因を突き止めて解決すればいいのでしょうか?
何かお分かりの方がいましたら教えてください。よろしくお願いします。

Aベストアンサー

ALTキーを押しつつ、F11キーを押すと、VBEの画面になります。通常左のフレーム部分にVBAProjectの部分があり、標準モジュールの下にあるモジュール名の各々で右クリックして「モジュールXXの解放」をクリックし、確認の「いいえ」をクリックします。
モジュールの「解放」をしないと、プログラムコードを抹消しただけではマクロが存在する扱いになります。
シートモジュールがある場合は、VBAProjectの下の各シート名を
ダブルクリックして、右側にコードが現れたら、そのコードを抹消してください。
http://hp.vector.co.jp/authors/VA016119/hajimete/event1.html
の画面例や最後の方も参考に見てください。

Q迷惑メールとは違って不可思議なメール現象

どなたか教えてください。

私の上司→お客様にメールしました。
→返信が私の携帯宛に送られました。

○私とお客様には面識、メール交換履歴等一切ありません。

○返信の文章内容で上司からのメールに返したものとわかりました。

○上司からそのお客様に送った際に私がcc、bccに入っていたわけでもないです。
特に、仕事上のアドレスは別にありますし、携帯アドレスはほぼ使っていません。
ただ、上司は私の携帯アドレスにこれまでに何度かメールをくれています。

○上記の現象と関係するのかどうかわかりませんが、
この現象が起きた前後24時間で携帯アドレス宛の迷惑メールも急増しました。

○お客様に、なぜ私の携帯に送ったのか直接聞けたら良いのですが
 立場上、難しいのでこちらで何かヒントをいただけたらと思っています。

とっても、気持ち悪いです・・・。
よろしくお願いします。

Aベストアンサー

例えば、あなたの携帯から送られたメールを
上司が流用/編集してお客様に送った場合、
メーラーによっては、気をつけてないと
そのようなことが発生する場合があります。

上司は、あなたからの携帯メールをそのまま流用して
本文を少し編集(または本文内容を一旦クリア後新規入力)して、
宛先、cc、bccを確認の上お客様に送信しただけのつもりですが、
メーラーによっては、from欄含めそれ以外のメールヘッダ内容を
流用元のまま送信するものがあります。
つまりfrom欄があなたのメールアドレスのまま送信される
ということです。もしあなたの携帯メールにあなた宛ての
reply-toがついていたら、それも同様です。
お客様から返信した時には、fromかreply-toに記載されている
あなた宛てに返信されることになります。

これは、意外とやりがちです。
いつもの自分のメーラーを使って送信したのだから、
当然fromは自分のアドレスになっていると思い込んでしまうのです。

例えば、Becky Internet Mailというメーラーは、
以前はこのような形で受信メールを流用して送信した場合、
From欄が元の流用元メールのまま送信されるようになって
いましたが、今はそのような送信をする時に警告メッセージが
出るようになっています。
古いメーラーを使っている場合は、そのような配慮が
行きとどいてない場合があります。

とりあえず、上司がお客様宛に送信したメールのヘッダを
よく確認してみてください。

もし説明した現象が起きていたなら、今後は別のメールを流用して
送信する場合は、メールそのものを流用するのではなく、本文を
コピペして流用するよう周知徹底する必要があります。

例えば、あなたの携帯から送られたメールを
上司が流用/編集してお客様に送った場合、
メーラーによっては、気をつけてないと
そのようなことが発生する場合があります。

上司は、あなたからの携帯メールをそのまま流用して
本文を少し編集(または本文内容を一旦クリア後新規入力)して、
宛先、cc、bccを確認の上お客様に送信しただけのつもりですが、
メーラーによっては、from欄含めそれ以外のメールヘッダ内容を
流用元のまま送信するものがあります。
つまりfrom欄があなたのメールアドレスのまま送信される
...続きを読む

Qマクロ初心者です。 よろしくお願いします。 A列に約20文字以上の入力がある場合、B列には5文字目か

マクロ初心者です。
よろしくお願いします。

A列に約20文字以上の入力がある場合、B列には5文字目から10文字目を、C列には15文字から18文字目までを反映されたいです。

関数ではできるのですが、マクロてのやり方を教えて頂けないでしょうか。
よろしくお願いします。
A列の入力数は不特定です。

Aベストアンサー

マクロの登録からだと、
Alt+F11でVBEditor起動。
左側のプロジェクトエクスプローラで、Sheet1を右クリック-[コードの表示]を選択。
「Sheet1(コード)」で、下記のマクロをコピペ。

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A:A")) Is Nothing Then 'A列が変更された?
  If 20 <= Len(Target.Text) Then '20文字以上?
   ' 1つ右のセル(B列)に、対象の5文字目からの6文字を抽出
   Target.Offset(0, 1).Value = Mid(Target.Text, 5, 6)
   ' 2つ右のセル(C列)に、対象の15文字目からの4文字を抽出
   Target.Offset(0, 2).Value = Mid(Target.Text, 15, 4)
  End If
 End If
End Sub

とか。

Q「危機管理意識のしっかりした企業ならBCCは使用禁止」とは?

先ほど、別の方の質問ですが、以下のような質問がありました。

Outlook2000と2003について
http://okweb.jp/kotaeru_reply.php3?q=1706105

その中で、回答に

>例えBCCで送信しても、送信間違いは防止できないですよ。
>それに、BCCは技術さえあれば簡単に内容が張れてしまいます。
>ですから、危機管理意識のしっかりした企業ならBCCは使用禁止なのです。

というものがありました。しかし私は寡聞ながらBCCを禁止する理由がわかりません。
今までにBCCに関する零弱性は、以下のようなもの

意図しない宛先にメールを送ってしまう問題
http://www.forest.impress.co.jp/article/2005/05/27/mailerverup.html
Outlook Expressに「BCC」のアドレスを表示してしまう不具合
http://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20040825/149044/

などで、「BCCという仕組み」そのものに脆弱性があるとは聞いたことがありませんし、BCCという仕組みを使って「技術さえあれば簡単に内容が張れてしまいます」という事の意味がわかりません。

そもそも、セキュリティに厳しい企業ほど、To: Cc:とBcc:の使い分けをきちんとするものだと考えていたので、寝耳に水でした。

そこで、

・BCCを使用禁止にしている企業例
・「技術さえあれば簡単に内容が張れてしまいます」とはどういうことか
・何かBCCに関する脆弱性情報

これらをお教えいただければ幸いです(一部でも構いません、参考になれば結構です)

なお、BCCを利用してTo: Cc:のあて先とは別に誰かに送った事がTo: Cc:のあて先の人間にはわからない、というのはそもそもBcc:がそういう仕様ですから、そこは除きます。もしそこが決定的な脆弱性である、と述べるのであれば、その根拠を書いてください。

以上、よろしくお願いします。

先ほど、別の方の質問ですが、以下のような質問がありました。

Outlook2000と2003について
http://okweb.jp/kotaeru_reply.php3?q=1706105

その中で、回答に

>例えBCCで送信しても、送信間違いは防止できないですよ。
>それに、BCCは技術さえあれば簡単に内容が張れてしまいます。
>ですから、危機管理意識のしっかりした企業ならBCCは使用禁止なのです。

というものがありました。しかし私は寡聞ながらBCCを禁止する理由がわかりません。
今までにBCCに関する零弱性は、以下のような...続きを読む

Aベストアンサー

参考URLのPGPとの相性なのかな、と思いますが、ご質問の上2点については解りません。

#BCCを使用禁止にする意味がわからない。メールは個別に送信しろという事かな?

参考URL:http://www.cla-ri.net/pgp/bcc.html

Qエクセル2003で別のマクロで選択したセルに別のシートからコピーして貼り付けるマクロ

別のマクロで選択したセルに別のシートからコピーして貼り付けるマクロ、どうしても、このマクロが作れないです。
難題すぎて・・・・
貼り付けるセルの値は選択ボタンによって変わる仕様ですが、エクセル2003で可能なんでしょうか?
難しすぎてコードが全然解らない状態です
どなたかご教授願えれば幸いです。

Aベストアンサー

モジュールレベルで変数を宣言すればどうでしょうか。
マクロが同じモジュールにがあるなら
Dim rng As Range
マクロが別のモジュールにあるなら
Public rng As Range

Sub a()
Set rng = ActiveSheet.Range("A1")
End Sub

Sub b()
MsgBox rng.Value
Set rng = Nothing
End Sub

[XL] Visual Basic for Applications 変数の適用範囲
​http://support.microsoft.com/kb/141693/ja


人気Q&Aランキング

おすすめ情報