
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)

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 添付ファイルをつけてメールを送る方法について 1 2021/10/29 08:48
- Visual Basic(VBA) VBA EXCELからメールを送る方法について 5 2021/11/04 06:30
- その他(Microsoft Office) エクセルの数式で教えてください。 3 2021/12/21 09:20
- その他(Microsoft Office) outlookで宛先が異なるメールを一括送信する方法 outlookで200人それぞれをtoに指定し 2 2023/08/03 21:24
- Visual Basic(VBA) VBA CSV取り込みについて 3 2021/12/30 22:40
- Access(アクセス) accessでexcelデータを一部変換してインポートするVBAコードを教えてください。 2 2021/12/14 08:31
- Visual Basic(VBA) excel VBAでメールを送る方法について 2 2021/11/03 15:34
- Excel(エクセル) アンケート集計用VBAについて教えて下さい。 約100人にアンケート内容が入ったExcelファイルを 1 2022/07/27 13:12
- Visual Basic(VBA) excel VBAでメールを送る方法について 4 2021/11/03 17:37
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
エクセル 同じ数字を他の列に自...
-
エクセルからメールを作れるか...
-
パソコンWindows11 Office2021...
-
エクセルについて
-
Office2021を別のPCにインスト...
-
Microsoft365、ページ設定がで...
-
Windows 11で、IME言語バー(IM...
-
マクロ自動コピペ 貼り付ける場...
-
outlookのメールが固まってしま...
-
libreoffice calcで行を挿入し...
-
快活CLUBについて 私用で使う書...
-
Teams内でショートカットって貼...
-
別シートの年間行事表をカレン...
-
Excel 日付を比較したら、同じ...
-
エクセル:一定間隔で平均値を...
-
【Excel】セル内の文字が正しい...
-
Microsoft Formsの「個人情報や...
-
エクセルで特定のセルの値を別...
-
パソコンを買い替える際、前の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの練習問題
-
VBA:フォルダ内の全excelを操...
-
excel2003のツールバー
-
ExcelとOutlookの連携について...
-
WinからMacへメールを送る時の...
-
Excel に貼り付けた図形が、保...
-
エクセルで「ページレイアウト...
-
至急!教えてください!!「Mic...
-
アクセスVBAで既に開いているエ...
-
Macで作成したファイル(Word)を...
-
メールでCADデータが送られまし...
-
ロータス1-2-3のファイルをエ...
-
エクセルが勝手に開く
-
jtrim 1.53cが正常な動きをし...
-
EXCELを起動したとき120%の表...
-
Outlookでメールが送信できない。
-
Wordで作成したものをUSBに保存...
-
VBによるEXCELの書き込み
-
LANケーブルを挿すとEXCELが重...
-
メールソフトThunderbirdに関して
おすすめ情報