カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

Outlookを利用してメール送信 [VBA]

ACCESSからOutlookを起動し、メールを送信することができます。
メール本文等にデータベースの内容などを引用して作成したい場合などに便利です。

【動作確認環境】
Windows XP & Microsof Office 2000
Windows7 & Microsoft Office 2010, 2013

まずは宣言

Dim oApp    As Object 'Outlookのオブジェクト
Dim objMAIL As Object 'メールのオブジェクト

Dim strMOJI As String '本文
Dim strSign As String '署名

Outlookを起動

オートメーションでOutlookを起動します。

Set oApp = CreateObject("Outlook.Application")

Outlook本体の画面も起動したいときは

Dim myNameSpace As Object
Dim myFolder    As Object

Set myNameSpace = oApp.GetNamespace("MAPI")

'規定のフォルダーを指定
Set myFolder = myNameSpace.GetDefaultFolder(6)
myFolder.Display  '表示

メールの作成

Set objMAIL = oApp.CreateItem(0)

objMAIL.Display '編集画面を表示

宛先を指定します。CC、Bccも可能です。
複数の宛先を;(セミコロン)で区切ることもできます。

objMAIL.To = mailTo
objMAIL.CC = mailcc
objMAIL.Bcc = mailbcc

続きを読む…»

この記事がお役に立ちましたらシェアお願いします

63,532 views

既定のプログラムで実行させる

ACCESSにてURLを指定しWEBページを開きたい場合、InternetExplorerのパスを指定して実行させることも可能ですが、ユーザーが設定している既定のブラウザで実行させることも可能です。
その場合は以下のようにします。

Dim ws As Object

Set ws = CreateObject("WScript.Shell")

ws.Run "http://www.yahoo.co.jp/", VbAppWinStyle.vbMaximizedFocus

このWScript.ShellのRunメソッドは、新しいプロセス内でプログラムを実行します。

ブラウザに限らず、他のプログラムでも応用することができます。
2番目の引数はウィンドウステータスを指定します。
主な設定例は以下の通りです。

VbAppWinStyle.vbHide 0
VbAppWinStyle.vbNormalFocus 1
VbAppWinStyle.vbMinimizedFocus 2
VbAppWinStyle.vbMaximizedFocus 3
VbAppWinStyle.vbNormalNoFocus 4
VbAppWinStyle.vbMinimizedNoFocus 6

また、上記では省略していますが、第3引数(bWaitOnReturn)にTRUEを指定すると、プログラムが終了するまでスクリプトの実行を待機します。

詳しくは参考URLをご覧ください。

参考URL
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

この記事がお役に立ちましたらシェアお願いします

3,313 views

ADODB.Streamを使ったテキストファイルの読み書き

通常のテキストファイルの読み込みや書き込みだと
文字コードがShift_jisでしか扱えません。
他の文字コードを使いたい場合はADODB.Streamを使います。

テキストファイルの読み込み

Dim sr      As Object
Dim strData as String

Set sr = CreateObject("ADODB.Stream")

sr.Mode = 3 '読み取り/書き込みモード

sr.Type = 2 'テキストデータ

sr.Charset = "UTF-8" '文字コードを指定

sr.Open 'Streamオブジェクトを開く

sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む

sr.Position = 0 'ポインタを先頭へ

strData = sr.ReadText() 'データ読み込み

sr.Close 'Streamを閉じる

Set sr = Nothing 'オブジェクトの解放

続きを読む…»

この記事がお役に立ちましたらシェアお願いします

149,829 views

クリップボードを扱う [VBA]

VBAでクリップボードのデータを扱うには、
Microsoft Forms 2.0 Object Libraryへの参照設定が必要です。

参照設定なしにクリップボードのデータを扱うには

Dim ClipB    As Object

Set ClipB = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

ClipB.GetFromClipboard
MsgBox ClipB.GetText 'クリップボードの文字列を表示

ClipB.SetText "テスト"
ClipB.PutInClipboard 'クリップボードにデータを送信

Set ClipB = Nothing

この記事がお役に立ちましたらシェアお願いします

4,569 views

VBA CInt関数の注意点

CInt関数はデータ型を変換する際に使用する関数ですが、小数点以下の扱いがRound関数とは異なります。
CInt関数の場合は、四捨六入となり、0.5の場合のみ最も近い偶数に丸められます。

CInt(2.4) = 2
CInt(2.6) = 3

ここまでは通常の四捨五入と同じなのでわかりやすいと思います。

しかし、0.5だった場合だけ動作が異なります。

CInt(2.5) = 2
CInt(3.5) = 4

となります。

この記事がお役に立ちましたらシェアお願いします

1,804 views