ExcelのリストでOutlookから一斉メールを送信 [VBA/VBS]
Excelのリストで管理している宛先にメールを一斉に送信できれば
便利なのでここを参考にして作成してみた。
Basp21でもExcel VBAで操作してメール送信できるが、Basp21の
インストール、SMTP等のメールサーバ情報の設定が必要となるため
簡単にはに使えない。
そこでWindowsユーザーなら大多数の方が使用しているOutlookを使い、
VBAでOutlokを操作してメールを送信してみた。
使用方法
実際のサンプル(mail_outlook.xlsm)はこちらからダウンロードしてください。
mail_list sheet
- 送信欄に”〇”があるメールアドレスにメールを送信。”〇”以外は送信しない。
mail_template sheet
- 件名:「Test Mail」部分を変更
- 本文:「テストメールです。」部分を変更
TO: {0}様 → TO:”メール配信先リストの氏名”に自動変更
FROM: {1} → FROM:"送信者名"に自動変更 - 送信者名:「そうしんしゃ」部分を変更
ハイパーリング禁止(preventDefault: イベントのデフォルト動作禁止) [Webシステム]
JavaScriptのブラウザの操作に「イベントのデフォルト動作禁止」する
"preventDefault"なるメソッドを使ってみた時の備忘録。
操作内容
表示されているハイパーリンクの移動禁止・元に戻す操作
デフォルト動作の禁止サンプル
GoogleへのLink
コード
//------ JavaScript部 ----------- //イベント禁止 function stopLink(){ document.getElementById('lnk').addEventListener('click', evHandler, false); document.getElementById('stopDsp').innerHTML = "Linkが禁止されました!" } //イベント許可 function startLink(){ document.getElementById('lnk').removeEventListener('click', evHandler, false); document.getElementById('stopDsp').innerHTML = "Linkが許可されました!" } //イベント動作の操作 function evHandler(e){ e.preventDefault(); } //-------- HTML部 --------------- GoogleへのLink
WebページのTitle操作 [Webシステム]
WebページのTitle(ブラウザのタブに表示される文字)がJavaScriptで簡単に操作できる
ことが分かったので備忘録として記載。
実際の動作サンプル
Titleの変更
コード説明
//------ JavaScript部 ----------- var p_title; //titleを変更 function chngTitle(){ p_title = document.title; //元のtitleを退避 document.title = 'Titel変更しました。'; } //titleを元に戻す function retTitle(){ document.title = p_title; } //-------- HTML部 ---------- <input id="chg" type="button" value="Title変更" onclick="chngTitle();"> <input id="ret" type="button" value="Title復元" onclick="retTitle();">
Excelから複数Word文書をPDF出力 [VBA/VBS]
Excelから複数のWord文書をまとめてPDF化したい場合があり作成してみた。
簡単に作成できると思ったが、WordのDocument.ExportAsFixedFormatメッソドの引数ExportFormat:=wdExportFormatPDFでwdExportFormatPDFが未定義となり少し悩んでしまった。後で考えれば何のことは無いが、ExcelからWordのメッソドを呼び出すので、Word Object Libraryの参照設定を行うか、直接の値17で指定する必要があったのです。
機能
- Excelを開くとUserFormに「PDF化実行」ボタンが表示される。
- ボタンを押すとファイル選択ダイアログ(複数可)が表示される。
- 選択されたWordのPDFファイルがExcelと同じフォルダーに作成される。
サンプル
実際のサンプルはここ
コード
arryFileName = Application.GetOpenFilename(FileFilter:="Micosoft Word,*.docx?", MultiSelect:=True) If IsArray(arryFileName) Then For i = LBound(arryFileName) To UBound(arryFileName) inputFileName = arryFileName(i) outFileName = Replace(inputFileName, ".docx", "") & ".pdf" Set wd = CreateObject("Word.application") wd.Visible = False ここ wd.Documents.Open FileName:=inputFileName ↓ wd.ActiveDocument.ExportAsFixedFormat ExportFormat:=wdExportFormatPDF, OutputFileName:=outFileName wd.Quit Next End If
WebStorageを使って入力Formデータの一次保管 [Webシステム]
Web上でフォームデータを入力して入力項目が多い場合、途中で作業を中断したくなる場合がある。ブラウザを止めたり、電源を落とすと折角入力したデータが無くなり悔しい思いをする。こんなときのため入力データの「一次保管」できるWebページサンプルを作成してみた。
-
機能
- 入力データを自分のPCに保管(WebStorage)
- このページを開くと一次保管データの有無をチェック
- データがある場合「ロード」ボタンを表示し入力フォームにロード可能にする
- データ不要の場合「クリアー」ボタンで削除
実際のサンプル
Web Storage Sample(入力データ一次保管)
名前(漢字):
なまえ(かな):
住所:
TEL:
コード説明
//JavaScript部 //ページロード時のデータ有無チェック window.onload = function(){ checkStorage(); } //データsave function saveStorage(){ var data = new Object(); data['name'] = document.getElementById("name").value; data['kname'] = document.getElementById("kname").value; data['zyusyo'] = document.getElementById("zyusyo").value; data['tel'] = document.getElementById("tel").value; var jdata = JSON.stringify(data); var key = "WebStorageSample"; //データ識別のためページのtitleをkeyに localStorage.setItem(key, jdata); checkStorage(); } //データ再ロード function loadStorage(){ var data = new Object(); for(var i=0; i < localStorage.length; i++) { var key = localStorage.key(i); if(key == "WebStorageSample") { var value = localStorage.getItem(key); data = JSON.parse(value); document.getElementById("name").value = data['name']; document.getElementById("kname").value = data['kname']; document.getElementById("zyusyo").value = data['zyusyo']; document.getElementById("tel").value = data['tel']; break; } } checkStorage(); } //データ消去 function clearStorage() { localStorage.clear(); checkStorage(); } //データの有無チェック function checkStorage(){ var target = document.getElementById('msg'); if(localStorage.length > 0){ for(var i=0; i < localStorage.length; i++) { var key = localStorage.key(i); if(key == "WebStorageSample") { target.innerHTML = 'データが残っていますがロードしますか。<br><input type="button" value="ロード" onclick="loadStorage();"> <input type="button" value="クリア" onclick="clearStorage();">'; break; } } } else { target.innerHTML = "なし"; } } //HTML部 <h1>Web Storage Sample(入力データ一次保管)</h1><br> <span>名前(漢字)</span>:<input type="text" id="name"><br> <span>なまえ(かな)</span>:<input type="text" id="kname"><br> <span>住所</span>:<input type="text" id="zyusyo"><br> <span>TEL</span>:<input type="text" id="tel"><br> <input type="button" value="一次保管" onclick="saveStorage();"> <fieldset> <legend>一次保管データ</legend> <div id="msg">なし</div> </fieldset>
Web Storageを使ってローカル環境にデータを保存 [Webシステム]
HTML5 の機能にWeb Storageなるものがあるとのことで使ってみた。 Web Storageには2種類あるが今回はlocalStogareを使用した。
名称 | 機能 |
---|---|
sessionStrage | session単位でデータを管理。Windowを閉じるタイミングで消える。 |
localStorage | 永続的にデータを保存 |
- 「ダウンロード」ボタンでサーバ上のデータをローカル環境に保存
- 「表示」ボタンでローカル環境に保存されているデータを表示
- 「初期化」ボタンでデータを消去
コード
// javascript部 //保存関数 function saveStorage(id){ var data = document.getElementById(id).value; var time = new Date().getTime(); localStorage.setItem(time, data); loadStorage('msg'); } //呼び出し関数 function loadStorage(){ var result = '<table class="mytable">'; result += '<tr><th>Key</th><th>Value</th></tr>'; for(var i=0; i < localStorage.length; i++) { var key = localStorage.key(i); var value = localStorage.getItem(key); var date = new Date(); result += '<tr><td>' + key + '</td><td>' + value + '</td></tr>'; } result += '<table>'; var target = document.getElementById('msg'); target.innerHTML = result; } //サーバーからデータダウンロード(Ajax) function downLoad(){ var xhr = new XMLHttpRequest(); xhr.open('GET','./sample.txt',true); xhr.responseType = 'text'; xhr.send(); xhr.onload = function(e){ if(this.status == 200){ var result = this.response; document.getElementById("memo").value = result; //save web storage var date = new Date(); var key = datestr = date.getFullYear() + "/" + (date.getMonth()+1) + "/" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); localStorage.setItem(key, result); } }; loadStorage(); } //HTML部 <h1>Web Storage Sample</h1> <input type="button" value="Download" onclick="downLoad();"> <input type="hidden" id="memo"> <input type="button" value="表示" onclick="loadStorage();"> <input type="button" value="初期化" onclick="clearStorage('msg');"> <p id="msg"></p>