![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
excelとoutlookの連携について教えてください。(VBAを使わないで)
excelの中に氏名、アドレス、所属先が400名ほど入っています。
その400名へメールを送りたいのですが、添付ファイルがそれぞれ違う為、メールを一括送信するのではなく、1通ずつ内容(本文内の文頭にくる氏名)を変えて送信したいのですが、VBAを使わないで送信できる方法は何かありますか??
宛先:xxxxxx@xxx (excelより拾いたい)
件名:○○(400件全部同じ)
本文:
○○○病院(excelより拾いたい)
○○先生(excelより拾いたい)
○○をお願いします。(ここは400件全部同じ)
欲を言えば、添付ファイルもその宛名の先生に合ったファイルをポンと送れる方法があれば知りたいです。よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
「メール一斉送信」などで検索すると、無料で使用できるソフトもいくつかありますが、
ソフトなどをインストールせずにとなると、powershellでもできると思います。
powershellはコマンドレットでPCを操作できるもので、詳細は以下などで確認してください。ExcelやOutlookの操作のほかにもいろいろできるので調べてみると便利だと思います。
https://docs.microsoft.com/ja-jp/powershell/scri …
実行方法は、
スタートボタン→Windows Powershellから「Windows Powershell」開き、スクリプトを貼り付けて「Enter」をクリック
もしくは、
スクリプトを、拡張子「.ps1」で保存し、右クリック→「Windows Powershellで実行」をクリック(こちらは管理者権限が必要)
です。
以前、powershellで同じような処理をするために
作っていたスクリプトがあるので参考までにしてください。
宛名の先生にあったファイル選ぶ基準がよくわからないのですが、
例えば、エクセルファイルに添付したいファイル名の情報があるとすると
ファイル名で指定することはできます。
以下の条件で作成しているので
ご自身の環境に合わせて内容を書きかえる必要があります。
・参照するエクセルと添付するファイルはすべて「C:\temp\」のフォルダにある
・参照するエクセルのファイル名は「list.xlsx」
・参照するエクセルのシート名は「Sheet1」
・エクセルファイルの内容は添付図のように、
A列は名前、B列はアドレス、C列は所属、D列は添付するファイル名で、
1行目は項目、2行目~400行目までに氏名やアドレスなどの情報がある
・同じフォルダ内にファイル名が別のファイル名の一部になっているものはない
(「あいう」と「あいう1」はNG、「あいう1」と「あいう2」はOK)
・送信元のアドレスは「aaa@aaa」
・メールの自動送信はせず、下書きに保存する
(自動で送信までする場合は、$mail.send()の前にある#を消してください)
以下スクリプトです↓
#Outlookが開かれているかを確認する
$TEST = Get-Process | Where-Object {$_.Name -match "OUTLOOK"}
#Outlookが開かれていない場合は、Outlookを起動する
if($TEST -eq $null){
$existsOutlook = $false
}else{
$existsOutlook = $true
}
if ($existsOutlook){
$OutlookObj = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
}else{
$OutlookObj = New-Object -ComObject Outlook.Application
}
#Excelアプリケーションを起動する
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
#情報が入っているファイルを開く
$book = $excel.Workbooks.Open("C:\temp\list.xlsx") #【開きたいExcelのパス】
#情報が入っているsheetを開く
$sheet = $excel.Worksheets.Item("Sheet1") #【開きたいsheetの名前】
#【送信するメールの数だけ繰り返す】
for($i = 2;$i -le 400; $i++){ #【エクセルの情報が入っている行】
#エクセルから情報を取得する(セルの指定は(行,列))
$name = $sheet.Cells.item($i,1).Text #【名前のセル(A列の場合、1)】
$address = $sheet.Cells.item($i,2).Text #【アドレスのセル(B列の場合、2)】
$hospital = $sheet.Cells.item($i,3).Text #【所属のセル(C列の場合、3)】
$filename = $sheet.Cells.item($i,4).Text #【ファイル名のセル(D列の場合、4)】
#エクセルが「名字 名前」となっていて、名字だけを本文に入れたい場合は、下2行の#を消す
#$name = $to.Split(" ")
#$name = $name[0]
#新規メールを作成する
$mail=$OutlookObj.CreateItem(0)
#送信元・宛先・件名・本文を設定する
$mail.Sender = "aaa@aaa" #【""の中に送信元のアドレスを入力する】
$mail.To = $address
$mail.Subject = "件名" #【""の中に件名を入力する】
$mail.Body ="$($hospital)病院
$($name)先生
○○をお願いします。
" #【""の中に本文を入力する】
#添付ファイルを指定のフォルダから探す
$file = Get-ChildItem C:\temp | ? {$_.Name -match $filename}
#メールにファイルを添付する
$mail.Attachments.Add($file.FullName) | Out-Null
#メールを保存する
$mail.save()
#メールを送信する、自動で送信したい場合は下1行の#を消す
#$mail.send()
#設定した変数を破棄する
[void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($mail)
}
#excelファイルを閉じてアプリケーションを終了する
$excel.Workbooks.Close()
$excel.Quit()
#設定した変数を破棄する
[void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($sheet)
[void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($book)
[void][System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($excel)
![「ExcelとOutlookの連携について」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/543129071_6205cd49b4a0c/M.png)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
マクロ自動コピペ 貼り付ける場...
-
大学のレポート A4で1枚レポー...
-
Officeを開くたびの「再起動メ...
-
outlookのメールが固まってしま...
-
【Excel VBA】PDFを作成して,...
-
会社PCのメールが更新されない
-
エクセルでXLOOKUP関数...
-
Windows 11で、IME言語バー(IM...
-
Microsoft Formsの「個人情報や...
-
Microsoft Officeを2台目のPCに...
-
Excel テーブル内の空白行の削除
-
マイクロソフト 一時使用コード...
-
MicrosoftOfficeについて質問で...
-
Outlook で宛先が複数の場合の人数
-
PDFのハイパーリンクを自動的に変更し...
-
1つのPCに「Excel 2010」「Exc...
-
Outlook 電源OFFの受診の仕方
-
Microsoft365で写真をアルバム...
-
【スプレドシート】IF関数の複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelとOutlookの連携について...
-
WinからMacへメールを送る時の...
-
win版excel2000ファイルをmac版...
-
Excel に貼り付けた図形が、保...
-
アクセスVBAで既に開いているエ...
-
エクセルが勝手に開く
-
至急!教えてください!!「Mic...
-
Macで作成したファイル(Word)を...
-
EXCELを起動したとき120%の表...
-
メールでCADデータが送られまし...
-
ロータス1-2-3のファイルをエ...
-
jtrim 1.53cが正常な動きをし...
-
エクセルで「ページレイアウト...
-
Excel複数ファイルを1つにまと...
-
It works! が表示されるという...
-
VBA 新規ファイルを元ファイル...
-
Wordで作成したものをUSBに保存...
-
ExcelでVBA実行後×(閉じる)ボタ...
-
pcゲームのセットアップが出来...
-
エクセルの表示サイズ変更(画...
おすすめ情報