忍者ブログ

書かないと忘れてしまうから

仕事上必要な工夫など、備忘録として残します。

[PR]

2024-05-17
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Excel等からCDOを利用しメールクライアントを介さずにメールする(2)

2012-11-04
「Excel等からCDOを利用しメールクライアントを介さずにメールする」で紹介したCDOをExcelに実装しました。

CDOtest(xls)
マクロを有効にしないと使用出来ません。
マクロはパスワードをかけていないので自由に改造して使用して下さい。

GoMail関数改


Sub GoMail(t As Variant, sj As Variant, bd As Variant, Optional at As Variant)

Set objMail = CreateObject("CDO.Message")

Worksheets("setting").Select
With Sheets("setting")

    objMail.to = t '送信先アドレス
    objMail.Subject = sj 'メール題名
    objMail.TextBody = bd  '本文
    If at <> "" Then objMail.AddAttachment at '添付ファイル

    objMail.From = .Range("B1")
    chars = .Range("B2")
    If chars = "" Then chars = "utf-8"
    objMail.BodyPart.Charset = chars
    objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = .Range("B3")
    objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = .Range("B4")
    objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = .Range("B5")
    objMail.Configuration.Fields.Update
End With

objMail.Send

Set objMail = Nothing
End Sub
このコードは標準モジュールに記載してあります。


発信者メールアドレス、エンコード、送信方法(2=SMTP)、SMTPサーバー、ポート番号
は setting というシートから読み取りますから適切に設定して下さい。
送信先メールアドレス、メール件名、メール本文、添付ファイルのフルパス名は呼び出し側から引数で与えます。

呼び出し側



送信先メールアドレス、メール件名、メール本文、添付ファイルのフルパス名を入力して下さい。
「メール送信」ボタンをクリックしたら実行されます。
PR

Excel等からCDOを利用しメールクライアントを介さずにメールする

2012-11-04
 メールクライアントを通さずにメールを送りたいということはありませんか。
 CDOを使うと、DLLやメールクライアントソフトを介さずにメール送信できます。これを使って、Excelからメールする方法をさぐりました。
 汎用化するために、メール送信部と呼び出し側に分けます。

呼び出し側

コマンドボタンをシートに作成して下さい。
そのコマンドボタンをクリックしたら実行されるVBAを組みます。
GoMail(送信者メアド,宛先メアド, 件名, 本文,添付ファイル,エンコード) で呼び出すことになります。
CDOは実行時バインディングしており参照設定はしていません。

■呼び出し側VBA
Private Sub CommandButton1_Click()

 fad="abc@gmail.com" ' 発信者アドレス
 tad="xyz@gmail.com" '送信先アドレス
 mbody="Hello" 'メール本文
 sbj="Mail Test" 'メール題名

 '添付ファイルを指定してUTF-8形式で送信
 Call Gomail(fad,tad,sbj,mbody,"c:a.csv","UTF-8")

End Sub

メール送信コア部分



 多少の汎用性を確保するため、VBAのエディタ画面にてプロジェクトに標準モジュールを挿入し、そこに下記のように記載します。
■メール送信コア部分
Sub GoMail(fm As Variant, t As Variant, sj As Variant, bd As Variant, Optional at As Variant, Optional chars As Variant)
 Set objMail = CreateObject("CDO.Message")

 objMail.From = fm ' 発信者アドレス
 objMail.To = t '送信先アドレス
 objMail.Subject = sj 'メール題名
 objMail.TextBody = bd '本文

 If at <> "" Then objMail.AddAttachment at '添付ファイル
 If chars = "" Then chars = "utf-8" 'エンコード
 objMail.BodyPart.Charset = chars

 strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"

 With objMail.Configuration.Fields
   .Item(strConfigurationField & "sendusing") = 2 '送信方法=SMTP使用
   .Item(strConfigurationField & "smtpserver") = "xxx.xxx..xxx.xxx"'SMTPのIPアドレス
   .Item(strConfigurationField & "smtpserverport") = 25
   .Update
 End With

 objMail.Send
 Set objMail = Nothing

End Sub

~= 2の部分はSMTPにより送信するという宣言だと考えます。
smtpserver=は、メール送信に使用するサーバーのホスト名、もしくはIPアドレスを指定 smtpserverport=はデフォルトの25番ポートか、サーバー指定のポート。
海外のアプリを使用する機会が多いのでエンコードはUTF-8をデフォルトにしてみました。JISならば"iso-2022-jp"です。

Gmailの場合にはWith~End With にさらに下記設定も追加してみます。
  .Item(strConfigurationField & "smtpusessl") = True
   .Item(strConfigurationField & "smtpauthenticate") = 1
   .Item(strConfigurationField & "sendusername") = "xxxxx@gmail.com"
   .Item(strConfigurationField & "sendpassword") = "password"
   .Item(strConfigurationField & "smtpconnectiontimeout") = 60

serialtyさんのページを参照しました

■VBAで利用する方法
Call GoMail(発信者メールアドレス,宛先メールアドレス,メール件名,本文[,添付ファイル,エンコード])
で呼び出します。
添付ファイルの指定がなければ当たり前ですが添付しません。
エンコードの指定がなければデフオルトはUTF-8にしてあります。
※KingSoftSpreadsheets2010 VBA版でも動作しました。

Googleアカウントへのアクセス許可を削除する

2012-11-03
 ジョルテやGoogle Tasks Backup のようにGoogleアカウントへのアクセスを(いつの間にか)許可していることも増えてきました。
 便利ですが、そのままにしておくといつまでもそのサービスがGoogleアカウントの情報にアクセスできてしまう状態が放置されてしまいます。  では、アクセスを許可したサイトを削除する方法ですが、接続済みのサイト>アプリケーション>サービスにて編集します。
■サンプル
不要なサービスは「アクセスを取り消す」を押して削除して下さい。


Google TasksにアップロードするCSVのヘッダについて

2012-11-02
ToDo管理(タスク管理)アプリはたくさんありますが、基本は GoogleTasks でしょう。
大多数のアプリがGoogleTasksとシンクロできるようになっているため、データの溜め込みはGoogleTasksとして、活用はお気に入りのアプリで・・・というような使い方が理想でしょうか。
 昨年のタスクをダウンロードして今年のタスクを作成し、GoogleTasksにアップロードするという使い方を考えます。
GoogleTasksにはデータアップロードが公式には用意されていません。
GoogleTasksにデータをアップロードする手段としてGoogle Tasks Importがあります。
 Google Tasks Importが想定しているCSVがどんなものか探れば、GoogleTasksのために用意できる/しなくてはならないデータがどんなものかわかります。
 

OutlookCSVはサポートしているがフル対応ではない

 Google Tasks Import はOutlookCSVをインポートできます。まずはこれを探ると、OutlookCSVのヘッダは下記の通りです。
Subject
Start Date
Due Date
Reminder On/Off
Reminder Date
Reminder Time
Date Completed
% Complete
Total Work
Actual Work
Billing Information
Categories
Companies
Contacts
Mileage
Notes
Priority
Private
Role
Schedule+ Priority
Sensitivity
Status
ではありますが、あくまで、Outlookのデータを読み込めるというだけであり、すべてのデータがGoogle Tasksに反映するというわけではありません。
たとえばRoleに何か記述してもタスクの表示には反映しません。

ではGoogleTasksに反映できる項目は何でしょうか。

GTB Import/Export CSVから探る

 
 次に、Google Tasks Importのソースを見ると、
# All possible columns, used when using GTB Import/Export CSV format
FULL_CSV_ELEMENT_LIST = ['tasklist_name', 'title', 'notes', 'status', 'due', 'completed', 'deleted', 'hidden', 'depth']
とあります。
 GTB Import/Export CSVはタスクを再構成するのに必要な項目と説明されていますので、これらを利用すると良いと思います。

tasklist_name タスクリスト名
title タスク
notes 説明
status 状態(NeedsAction,NotStarted,Completedなど)
due 期限日時
completed 完了日時
deleted 削除[TRUE/FALSE]
hidden した[TRUE/FALSE]
depth タスクのインデントの深さ(親=0)

これらの項目から必要な項目を設定してやることになります。

 1タスク目は必ずdepth=0でなければなりません。
 depthはギャップが許されません。
 たとえば、depth=2の次の行はdepth=1かdepth=3でないといけません。

GoogleカレンダーにアップロードするCSVに必要なヘッダ

2012-11-01
 小学校や幼稚園の行事は毎年似た時期に繰り返されます。昨年の行事データをダウンロードしてExcelで今年版に変更してアップロードすることができると楽です。
 GoogleカレンダーにはローカルからCSVやiCalをアップロードできます。
 Google カレンダーにCSVをアップロードするにあたり、どんな情報をアップロードできる/しなくてはならないか、Googleカレンダーの説明(CSVファイルについて)を確認してみると・・・

■ヘッダの例
Subject, Start Date, Start Time, End Date, End Time, All Day Event,
Reminder On/Off, Reminder Date, Reminder Time, Meeting Organizer,
Description, Location, Private
(件名, 開始日, 開始時刻, 終了日, 終了時刻, 終日イベント,
通知オン/オフ, 通知日, 通知時刻,
ミーティング管理者, 説明, 場所, 非公開)
 と、あります。
 また、
Google カレンダーに予定をインポートするために最小限必要なヘッダー情報は、「Subject」、「Start Date」、「Start Time」です。
 とありますが、「Start Time」はなくともアップロードできました。
 「Subject」、「Start Date」があれば良いようです。

プロフィール

HN:
otsukare30
性別:
男性
自己紹介:
mail:otsukare30★gmail.com

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ブログ内検索

忍者カウンター

P R