質問編集履歴
1
ソースコードを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,35 +6,86 @@
|
|
6
6
|
ExcelのVBAで、OUTLOOL2013のメッセージファイル(.msg)から送信元アドレスを取得しようとしています。
|
7
7
|
今回は受信トレイのメールからではなく、ローカルの任意の場所にコピーしたメッセージファイル(.msg)からデータを取り出したいです。
|
8
8
|
|
9
|
-
###
|
9
|
+
### 該当のソースコード
|
10
|
+
```VBA
|
11
|
+
Sub get_msg()
|
10
12
|
|
11
|
-
以下のようなプロパティを利用しても、メールアドレスではなく名前に変換されてしまいます。
|
12
|
-
SentOnBehalfOfName
|
13
|
-
Sender
|
14
13
|
|
14
|
+
Dim OL As Object
|
15
|
+
Dim msg As Object
|
16
|
+
Dim intNo As Integer
|
17
|
+
Dim strFileName As String
|
18
|
+
Dim strOutFileName As String
|
15
|
-
|
19
|
+
Dim SaveFolderPath As String
|
16
|
-
|
20
|
+
Dim AttFile_excel As String
|
21
|
+
Dim AttFile_text As String
|
17
22
|
|
23
|
+
' テキストを出力するファイルを設定(※要変更)
|
24
|
+
strFileName = "C:\Temp\明日の予定について.msg"
|
25
|
+
' テキストを出力するファイルを設定(※要変更)
|
26
|
+
strOutFileName = "C:\Temp\sample.txt"
|
27
|
+
' 添付ファイルの保存先フォルダ(※要変更)
|
18
|
-
|
28
|
+
SaveFolderPath = "C:\Temp\"
|
19
|
-
|
29
|
+
'メールに添付されているエクセルファイル
|
20
|
-
|
30
|
+
AttFile_excel = "C:\Temp\サンプルエクセル.xlsx"
|
31
|
+
'メールに添付されているテキストファイル
|
32
|
+
AttFile_text = "C:\Temp\サンプルテキスト.txt"
|
21
33
|
|
22
|
-
|
34
|
+
'Outlookのアプリケーションオブジェクトを作成する
|
35
|
+
Set OL = CreateObject("Outlook.Application")
|
36
|
+
Set msg = OL.CreateItemFromTemplate(strFileName)
|
37
|
+
|
23
38
|
|
24
|
-
|
39
|
+
intNo = FileSystem.FreeFile() ' フリーファイルNoを取得
|
40
|
+
Open strOutFileName For Output As #intNo ' 上書きモードでファイルをオープン
|
41
|
+
|
25
42
|
|
26
|
-
SenderName: Yamada, Taro/山田 太郎 ←★ここをメールアドレスとして取得したい
|
27
|
-
SenderEmailAddress: /O=xxxx EXCHANGE ORGANIZATION/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=YAMADA.TARO018
|
28
|
-
SentOnBehalfOfName:
|
43
|
+
Print #intNo, "SentOnBehalfOfName: " & msg.SentOnBehalfOfName
|
29
|
-
|
44
|
+
Print #intNo, "SenderName: " & msg.SenderName
|
30
|
-
ReceivedOnBehalfOfName:
|
45
|
+
Print #intNo, "ReceivedOnBehalfOfName: " & msg.ReceivedOnBehalfOfName
|
46
|
+
Print #intNo, "ReplyRecipientNames: " & msg.ReplyRecipientNames
|
31
|
-
To:
|
47
|
+
Print #intNo, "To: " & msg.To
|
32
|
-
CC:
|
48
|
+
Print #intNo, "CC: " & msg.CC
|
33
|
-
BCC:
|
49
|
+
Print #intNo, "BCC: " & msg.Bcc
|
50
|
+
Print #intNo, "Subject: " & msg.Subject
|
51
|
+
Print #intNo, "Body: " & msg.Body
|
52
|
+
|
53
|
+
Close #intNo ' ファイルをクローズ
|
34
54
|
|
55
|
+
Set msg = Nothing
|
56
|
+
Set OL = Nothing
|
57
|
+
|
58
|
+
End Sub
|
59
|
+
```
|
60
|
+
|
61
|
+
### 試したこと
|
62
|
+
|
63
|
+
[実行結果]
|
64
|
+
`SentOnBehalfOfName`: Yamada, Taro/山田 太郎 ←★ここをメールアドレスとして取得したい
|
65
|
+
`SenderName`: Yamada, Taro/山田 太郎
|
66
|
+
`ReceivedOnBehalfOfName`: Suzuki, Hanako/鈴木 花子
|
67
|
+
`ReplyRecipientNames`:
|
68
|
+
`To`: Suzuki, Hanako/鈴木 花子
|
69
|
+
`CC`:
|
70
|
+
`BCC`:
|
35
|
-
|
71
|
+
`Subject`: 明日の予定について
|
36
|
-
Body:
|
72
|
+
`Body`:
|
37
73
|
担当者様
|
38
74
|
|
39
75
|
お世話になっております。
|
40
|
-
明日の出発時間は何時でしょうか。
|
76
|
+
明日の出発時間は何時でしょうか。
|
77
|
+
---
|
78
|
+
|
79
|
+
|
80
|
+
以下のようなプロパティを利用しても、メールアドレスではなく名前に変換されてしまいます。
|
81
|
+
`SentOnBehalfOfName`
|
82
|
+
`Sender`
|
83
|
+
|
84
|
+
`SenderEmailAddress`を使用しても、以下のように組織にあるExchangeサーバの情報しか取れません。
|
85
|
+
/O=xxxx EXCHANGE ORGANIZATION/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=YAMADA.TARO018
|
86
|
+
|
87
|
+
どうすれば、名前として変換されているメールアドレスを取得できるでしょうか。
|
88
|
+
プロパティについては、以下MSDNを参考にしています。
|
89
|
+
[MailItem メンバー (Outlook)](https://msdn.microsoft.com/ja-jp/library/office/ff861252.aspx)
|
90
|
+
|
91
|
+
### 補足情報(FW/ツールのバージョンなど)
|