Outlook 研究所

2016年9月24日

テキスト ファイルと RTF ファイルからメモ アイテムを生成するスクリプト

Filed under: スクリプト — outlooklab @ 12:00 PM

コメントにて以下のご要望をいただきました。


お世話になります
rtf形式or単なるテキスト形式で記録されているファイルをOUTLOOKのメモ(note)に登録したいのですがどうすればよいでしょうか。
できることなら、rtf/txtファイルをアイコンにドラッグ&ドロップする形で登録したいです。
なお、MS Office (WORD,OUTLOOK)は2013です

よろしくご教示ください



ファイルのドラッグアンドドロップで何らかの処理をさせたい場合、マクロではなく VBScript を使います。
VBScript のファイル (.vbs) に別のファイルをドラッグアンドドロップすると、そのファイル名がスクリプトの引数として引き渡されるので、スクリプト内で処理ができるのです。
ご要望の動作を行うスクリプトは以下のようになります。
この内容をメモ帳などにコピーし、拡張子を .vbs として保存すると、.vbs ファイルへのドラッグアンドドロップでメモ アイテムが生成されます。

' ここをトリプルクリックでマクロ全体を選択できます。
Option Explicit
Dim strFile
Dim strExt
If WScript.Arguments.Count > 0 Then
    ' スクリプトにドラッグアンドドロップされたファイルの名前を取得
    strFile = WScript.Arguments.Item(0)
    strExt = LCase(Right(strFile,4))
    If strExt = ".txt" Then
        CreateFromTxt strFile
    ElseIf strExt = ".rtf" Then
        CreateFromRtf strFile
    End If
End If
' テキスト ファイルの取り込み
Sub CreateFromTxt(strFile)
    Const ForReading = 1
    Dim objFSO
    Dim stmFile
    Dim strBody
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set stmFile = objFSO.OpenTextFile(strFile, ForReading)
    CreateMemo strFile, stmFile.ReadAll
    stmFile.Close
End Sub
' RTF ファイルの取り込み
Sub CreateFromRtf(strFile)
    Const wdDoNotSaveChanges = 0
    Const wdOriginalDocumentFormat = 1
    Dim appWord
    Dim docRtf
    Set appWord = CreateObject("Word.Application")
    appWord.Visible = True
    Set docRtf = appWord.Documents.Open(strFile)
    CreateMemo strFile, docRtf.Content.Text
    docRtf.Close wdDoNotSaveChanges, wdOriginalDocumentFormat, false
    appWord.Quit
End Sub
' メモ アイテムの作成
Sub CreateMemo(strFile, strBody)
    Const olNoteItem = 5
    Dim appOlk
    Dim objMemo
    Set appOlk = CreateObject("Outlook.Application")
    Set objMemo = appOlk.CreateItem(olNoteItem)
    objMemo.Body = strFile & vbCrLf & strBody
    objMemo.Display
    Set appOlk = Nothing
End Sub

2016年9月17日

Outlook 2016/2013/2010/2007 のセキュリティ修正プログラム MS16-107 がリリース

Filed under: 修正プログラム — outlooklab @ 12:00 PM

9/13 に Office 2016、Office 2013、Office 2010 および Office 2007 のセキュリティ修正プログラムがリリースされました。
Outlook も 2016、2013、2010、2007 でセキュリティ修正がリリースされています。
また、先週リリースされた Word や Office コンポーネントの修正には、Outlook に関連する機能追加が含まれているものがありました。
以下は各製品のそれぞれの KB へのリンクです。

Office 2016

Outlook 2016 のセキュリティ修正

2016 の Outlook のセキュリティ更新プログラム MS16-107: 説明: 2016 年 9 月 13 日
17 件のセキュリティ関連ではない不具合修正も行われています。

Office 2013

Outlook 2013 のセキュリティ修正

Outlook 2013 のセキュリティ更新プログラム MS16-107: 説明: 2016 年 9 月 13 日
7 件のセキュリティ関連ではない不具合修正も行われています。

Office 2013 共通コンポーネントの修正

September 6, 2016, update for Office 2013 (KB3115257)
1 件の Outlook 関連の機能追加が行われています。

Word 2013 共通コンポーネントの修正

2016 年 9 月 6 日は、Word 2013 (KB3118276) の更新します。
1 件の Outlook 関連の機能追加が行われています。

Office 2010

Outlook 2010 のセキュリティ修正

MS16-107: Description of the security update for Outlook 2010: September 13, 2016
セキュリティ修正のみが行われています。

Outlook 2007 のセキュリティ修正

MS16-107: Description of the security update for Outlook 2007: September 13, 2016
セキュリティ修正のみが行われています。

2016年9月10日

空き時間情報のみの権限を持つ予定表のアイテム数を取得する方法

コメントにて以下のご要望をいただきました。


はじめまして。Outlookマクロについて頼れるサイトとして、こちらのサイトで学んでいます。
Outlookのマクロで簡単にできそうなことで行き詰っています。
1 共有を得ていない方の予定表の一定期間のアイテム数を取得したいのですが、共有している場合は簡単に取得できるのに、うまくいきません。方法はあると思うのですが。
2 次善の手段として、予定表でステイタスバーに表示される「ビューのアイテム数」を取得したいのですが、これもわかりません。どのオブジェクトの何ていうプロパティか、教えてください。
1でも2でも、ご教示頂けると助かります。是非ともよろしくお願いします。



「空き時間情報、件名、場所」の権限がある他のユーザーの予定を一括で表示するマクロの記事で説明している通り、Exchange 環境でフォルダーのアクセス権限が「空き時間情報、件名、場所」となっている場合、EWS でアクセスする必要があります。
引数として取得したいユーザーのアドレスと開始日、終了日を指定すると、予定の件数を取得する関数を作りました。
EWS_URL には Exchange サーバーの EWS の URL を指定します。
また、 GetFreeBusyCountTest は動作を説明するためのサンプルになります。

' ここをトリプルクリックでマクロ全体を選択できます。
'
Private Function GetFreeBusyCount(strUser As String, dtStart As Date, dtEnd As Date) As Integer
    On Error Resume Next
    ' EWS の URL を指定します。
    Const EWS_URL = "https://casserver.example.com/ews/exchange.asmx"
    Dim xmlHttp
    Dim strXmlData As Variant
    Dim strStart As String
    Dim strEnd As String
    Dim xmlDoc
    Dim i As Integer
    ' EWS リクエスト生成
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    strXmlData = "<?xml version=""1.0"" encoding=""utf-8""?>" & _
        "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" & _
        " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" & _
        " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""" & _
        " xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">" & _
        "<soap:Body>" & _
        "<GetUserAvailabilityRequest xmlns=""http://schemas.microsoft.com/exchange/services/2006/messages""" & _
        " xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">" & _
        "<t:TimeZone xmlns=""http://schemas.microsoft.com/exchange/services/2006/types"">" & _
        "<Bias>-540</Bias>" & _
        "<StandardTime><Bias>0</Bias><Time>00:00:00</Time><DayOrder>0</DayOrder><Month>0</Month><DayOfWeek>Sunday</DayOfWeek></StandardTime>" & _
        "<DaylightTime><Bias>-60</Bias><Time>00:00:00</Time><DayOrder>0</DayOrder><Month>0</Month><DayOfWeek>Sunday</DayOfWeek></DaylightTime>" & _
        "</t:TimeZone>" & _
        "<MailboxDataArray>"
    ' 取得するメールボックスを追加
    strXmlData = strXmlData & _
        "<t:MailboxData><t:Email><t:Address>" & strUser & "</t:Address></t:Email>" & _
        "<t:AttendeeType>Required</t:AttendeeType><t:ExcludeConflicts>false</t:ExcludeConflicts>" & _
        "</t:MailboxData>"
    ' 取得する期間を設定
    strStart = Format(dtStart, "yyyy-mm-ddThh:nn:ss")
    strEnd = Format(dtEnd, "yyyy-mm-ddThh:nn:ss")
    strXmlData = strXmlData & _
        "</MailboxDataArray>" & _
        "<t:FreeBusyViewOptions>" & _
        "<t:TimeWindow>" & _
        "<t:StartTime>" & strStart & "</t:StartTime>" & _
        "<t:EndTime>" & strEnd & "</t:EndTime>" & _
        "</t:TimeWindow>" & _
        "<t:MergedFreeBusyIntervalInMinutes>60</t:MergedFreeBusyIntervalInMinutes>" & _
        "<t:RequestedView>DetailedMerged</t:RequestedView>" & _
        "</t:FreeBusyViewOptions>" & _
        "</GetUserAvailabilityRequest>" & _
        "</soap:Body>" & _
        "</soap:Envelope>"
    ' リクエスト送信
    xmlHttp.Open "POST", EWS_URL, False ' , strDom & "\" & strUser, strPass
    xmlHttp.setRequestHeader "Content-Type", "text/xml"
    xmlHttp.Send strXmlData
    If xmlHttp.Status = "200" Then
        Set xmlDoc = CreateObject("MSXML2.DOMDocument")
        If xmlDoc.LoadXML(xmlHttp.responseText) Then
            ' OK なら件数を取得
            Set arrFBResps = xmlDoc.DocumentElement.getElementsByTagName("FreeBusyResponse")
            GetFreeBusyCount = arrFBResps(0).getElementsByTagName("CalendarEvent").Length
            Exit Function
        End If
    End If
    ' エラーなら 0 件とする
    GetFreeBusyCount = 0
End Function
'
Public Sub GetFreeBusyCountTest()
    On Error GoTo ErrorHandler
    Dim strUser As String
    Dim strStart As String
    Dim dtStart As Date
    Dim strEnd As String
    Dim dtEnd As Date
    Dim cFreeBusy As Integer
    '
    strUser = InputBox("取得するユーザーのアドレス:")
    strStart = InputBox("開始日")
    dtStart = CDate(strStart)
    strEnd = InputBox("終了日")
    dtEnd = DateAdd("d", 1, CDate(strEnd))
    cFreeBusy = GetFreeBusyCount(strUser, dtStart, dtEnd)
    MsgBox "予定の件数は " & cFreeBusy & " 件です。"
    Exit Sub
ErrorHandler:
    MsgBox Err.Description
End Sub

マクロの登録方法やメニューへの追加について

2016年9月3日

Excel のデータをもとに会議の変更通知やキャンセル通知を送信するマクロ

コメントにて以下のご要望をいただきました。


はじめまして。このサイトを活用させていただき、いろいろ勉強させていただいています。
このサイトを参考に、Outlook2007(Exchange環境)で会議出席依頼を発信するExcelマクロツールを作成しましたが、発信した会議出席依頼を、件名と開催時刻と終了時刻をキーに特定して、キャンセルの上、キャンセル通知を発信するマクロをご教示お願いいたします


はじめまして。「Excel のデータをもとに会議出席依頼を送信するマクロ」 を使用させていただいてますが以下の内容もできないでしょうか?
1.エクセル記載の日付、開始時間、終了時間、件名、場所が一致する会議予定を削除、又はキャンセル通知を送信する
2.エクセル記載の日付、開始時間、終了時間、件名、場所が一致する会議予定の日付、又は開始/終了時間を変更 する
ご教授頂けると助かります。よろしくお願い致します。



Outlook で変更通知を送信するには、元の会議アイテムに変更を加えて、改めて Send メソッドを実行します。
また、キャンセル通知を送信するには、元の会議アイテムの MeetingStatus を olMeetingCanceled (5) に変更し、Send メソッドを実行します。
以下のような Excel シートをもとに会議の変更およびキャンセルを行う Excel のマクロを作成しました。

  A B C D E F G H
1 日付 開始時刻 終了時刻 件名 場所 変更日付 変更開始 変更終了
2 2016/10/03 10:00 11:00 会議A 会議室1 2016/10/03 11:00 12:00
3 2016/10/04 11:00 12:00 会議B 会議室2      

変更日付が設定されている会議は変更通知を送信し、設定されていない会議はキャンセル通知を送信して削除します。
マクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ModifyCancelMeetingRequest()
    Const olFolderCalendar = 9
    Const olMeetingCanceled = 5
    Dim olkApp 'As Outlook.Application
    Dim fldCalendar 'As Outlook.Folder
    Dim objAppt 'As Outlook.AppointmentItem
    Dim r As Integer
    Dim dtAppt As Date
    Dim strStart As String
    Dim strEnd As String
    Dim strSubject As String
    Dim strLocation As String
    '
    Set olkApp = CreateObject("Outlook.Application")
    Set fldCalendar = olkApp.Session.GetDefaultFolder(olFolderCalendar)
    r = 2
    With Sheet1
        ' 日付のセルに値がある間繰り返す
        While .Cells(r, 1) <> ""
            ' セルで指定された条件の予定を検索
            Set objAppt = fldCalendar.Items.Find( _
                "[開始日] = '" & .Cells(r, 1) & " " & FormatDateTime(.Cells(r, 2), vbShortTime) & "' AND " & _
                "[終了日] = '" & .Cells(r, 1) & " " & FormatDateTime(.Cells(r, 3), vbShortTime) & "' AND " & _
                "[件名] = '" & .Cells(r, 4) & "' AND " & _
                "[場所] = '" & .Cells(r, 5) & "'")
            If Not objAppt Is Nothing Then
                If .Cells(r, 6) = "" Then ' 変更日付がなければ削除
                    ' 会議をキャンセル状態とする
                    objAppt.MeetingStatus = olMeetingCanceled
                    ' キャンセル通知を送信
                    objAppt.Send
                    ' キャンセルした会議を削除
                    objAppt.Delete
                Else    ' 変更日付があれば変更
                    objAppt.Start = .Cells(r, 6) & " " & FormatDateTime(.Cells(r, 7), vbShortTime)
                    objAppt.End = .Cells(r, 6) & " " & FormatDateTime(.Cells(r, 8), vbShortTime)
                    ' 変更通知を送信
                    objAppt.Send
                End If
            End If
            r = r + 1
        Wend
    End With
End Sub

2016年8月20日

メール本文のテキストのみをコピーするマクロ

コメントにて以下のご相談をいただきました。


初めての訪問です。ご相談があって書き込みをさせていただきます。
実は、Outlookで受信したメールの本文に含まれる「氏名」をコピペして、FileMakerで構築したDBを検索すると、以前はヒットしていたものが、2016以降、ヒットしなくなりました。
同じメールをGmailやWindows10のメールで受信して同じことをやると以前のようにヒットしますので、Outlook2016の問題ではないかと睨んでいます。
ところが、試しに本文中の「氏名」を件名にコピペして、さらにそれをコピペすると、FileMakerでの検索がヒットします。
つまり、ヒットしないのは、「本文中にある氏名」をコピペした場合のみです。
メール設定をいろいろと試してみましたし、「本文中にある氏名」をペーストする際にプレーンテキストとして貼り付けたりもしてみましたが、どうしてもうまくいきません。
日常業務に支障が出始めておりますが、今のところ原因・解決のめどがまったく立っておらず、こうして藁をもすがる思いで書き込みをさせていただきました。
もし、何かヒントでもございましたら、ぜひ、ご教示いただけないでしょうか。
よろしくお願いいたします。



一度件名にコピー&ペーストしてからさらにコピー&ペーストで発生しないとなると、Outlook の本文からのコピーの際にテキスト情報以外のものが含まれることで、検索に影響が発生している可能性が考えられます。
Windows でコピー&ペーストを行うと、内部的には以下のような動作が行われます。

  1. コピー元のアプリケーションからコピー先のアプリケーションに転送できるデータの形式を通知する
  2. コピー先のアプリケーションが取得できる最適な形式を指定してコピー元のアプリケーションからデータを受け取る

例えば、Outlook の HTML メールの本文をコピー&ペーストする場合、コピー先のアプリケーションにはデータ形式としてプレーン テキストと HTML テキストが通知されます。
そして、例えば受け取る側がメモ帳ならプレーン テキストが選択されて単なる文字列がコピーされ、Word なら HTML テキストが選択されて HTML タグを含んだ文字列がコピーされます。
おそらくは FileMaker がペーストした際にプレーン テキストではないデータを要求することで現象が発生しているのではないかと推測しますが、私の手元に FileMaker がないため、実際にそのような動作なのかはちょっと確認できません。

そこで、Outlook で選択した本文のプレーン テキストのみをコピーするというマクロを作ってみました。
このマクロを使用するには、まず以下の手順で Microsoft Forms 2.0 というライブラリを参照設定として追加します。

  1. Visual Basic Editor で [ツール]-[参照設定] をクリックします。
  2. [参照] をクリックします。
  3. 以下のいずれかの DLL を選択し、[開く] をクリックします。
    C:\Windows\System32\FM20.DLL
    C:\Windows\SysWOW64\FM20.DLL
  4. [OK] をクリックします。

そして、以下のマクロを定義し、本文のテキストのみをコピーしたいときにはこのマクロを実行します。
こちらで現象が回避できるか試してみてください。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub CopyTextOnly()
    Dim dataObject As New MSForms.dataObject
    dataObject.SetText ActiveInspector.WordEditor.Application.Selection
    dataObject.PutInClipboard
End Sub

マクロの登録方法やメニューへの追加について

2016年8月13日

Outlook 2016/2013/2010/2007 のセキュリティ修正プログラム MS16-099 がリリース

Filed under: 修正プログラム — outlooklab @ 12:00 PM

8/9 に Office 2016、Office 2013、Office 2010 および Office 2007 のセキュリティ修正プログラムがリリースされました。
Outlook も 2016、2013、2010、2007 でセキュリティ修正がリリースされています。
また Word や Office コンポーネントのセキュリティ修正には、Outlook のセキュリティ関連ではない修正も含まれています。
以下は各製品のそれぞれの KB へのリンクです。

Office 2016

Outlook 2016 のセキュリティ修正

MS16-099: Description of the security update for Outlook 2016: August 9, 2016
12 件のセキュリティ関連ではない不具合修正も行われています。

Office 2016 共通コンポーネントのセキュリティ修正

MS16-099: Description of the security update for Office 2016: August 9, 2016
1 件の Outlook 関連の不具合修正が行われています。

Word 2016 のセキュリティ修正

MS16-099: Description of the security update for Word 2016: August 9, 2016
1 件の Outlook 関連の不具合修正が行われています。

Office 2013

Outlook 2013 のセキュリティ修正

MS16-099: Description of the security update for Outlook 2013: August 9, 2016
15 件のセキュリティ関連ではない不具合修正も行われています。

Office 2013 共通コンポーネントのセキュリティ修正

MS16-099: Description of the security update for Office 2013: August 9, 2016
1 件の Outlook 関連の不具合修正が行われています。

Office 2010

Outlook 2010 のセキュリティ修正

MS16-099: Description of the security update for Outlook 2010: August 9, 2016
1 件のセキュリティ関連ではない不具合修正も行われています。

Outlook 2007 のセキュリティ修正

MS16-099: Description of the security update for Outlook 2017: August 9, 2016
セキュリティ修正のみが行われています。

2016年8月6日

メールを読んだ際に自動的に返信するマクロ

コメントにて以下のご要望をいただきました。


お世話になります。
指定した相手から届いたメールを読んだ際にメールを読んだ事を相手に自動的に返信する様な機能をマクロで実現出来ないでしょうか?
バージョンはoutlook2016です。



このような処理を行う場合、以下の処理が必要になります。

  • メールを受信時に指定した相手からのメールであれば返信が必要という意味のカスタム プロパティを設定する。
  • メールを開いた際に、返信が必要というプロパティが設定されていれば自動的に返信する。

これを実装したマクロは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。
Dim WithEvents mInspectors As Inspectors
'
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    On Error Resume Next
    Dim arrSender As Variant
    Dim oneSender As Variant
    Dim objMail 'As MailItem
    ' 返信が必要な差出人を , で区切って指定
    arrSender = Array("user1@example.com", "user2@example.com", "mchiba@jpoffolk.local")
    Set mInspectors = Application.Inspectors
    Set objMail = Session.GetItemFromID(EntryIDCollection)
    For Each oneSender In arrSender
        If objMail.SenderEmailAddress = oneSender Then
            ' 差出人が一致したらカスタム プロパティを設定
            Dim userProp As UserProperty
            Set userProp = objMail.UserProperties.Add("NeedReadReply", olText)
            userProp.Value = "Yes"
            objMail.Save
        End If
    Next
End Sub
'
Private Sub mInspectors_NewInspector(ByVal Inspector As Inspector)
    Dim objMail As MailItem
    Dim userProp As UserProperty
    Set objMail = Inspector.CurrentItem
    ' 開いたメールのカスタム プロパティを確認
    Set userProp = objMail.UserProperties.Find("NeedReadReply")
    If Not userProp Is Nothing Then
        ' 返信が必要なら開封済みのメッセージを送信
        If userProp.Value = "Yes" Then
            Dim objReply As MailItem
            Set objReply = objMail.Reply
            objReply.Body = "以下のメールを開封しました。" & vbCrLf & _
                "送信日時:" & objMail.SentOn & vbCrLf & "件名:" & objMail.Subject
            objReply.Send
            ' カスタム プロパティに返信済みと設定
            userProp.Value = "Done"
            objMail.Save
        End If
    End If
End Sub

マクロの登録方法やメニューへの追加について

2016年7月30日

受信メールの宛先やCcをアドレス帳の名前に置き換えるマクロ

コメントにて以下のご要望をいただきました。


初めまして。
windows10でoutlook2013を使用しています。
相手からのメールを受け取った際に、複数に送られている宛先がアドレスのみで表示されているのを
アドレス帳の名前で分かるようにしたいのですが、マクロで出来ますか?
よろしくお願い致します。



以下のようなマクロで実現できます。

' ここをトリプルクリックでマクロ全体を選択できます。
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    On Error Resume Next
    Dim objItem 'As MailItem
    Dim objRec As Recipient
    Dim recType As OlMailRecipientType
    Dim fldContacts As Folder
    Dim objContact As ContactItem
    Dim strAddress As String
    Dim strContact As String
    Dim cRec As Integer
    Dim i As Integer
    ' 受信メールを取得
    Set objItem = Session.GetItemFromID(EntryIDCollection)
    ' 連絡先フォルダーを取得
    Set objContacts = Session.GetDefaultFolder(olFolderContacts)
    ' 受信時の受信者数を取得
    cRec = objItem.Recipients.Count
    For i = 1 To cRec
        ' 受信者オブジェクトを取得
        Set objRec = objItem.Recipients(i)
        strAddress = objRec.Address
        ' アドレスにより連絡先フォルダーを検索
        Set objContact = objContacts.Items.Find("[Email1Address] = '" & strAddress _
            & "' or [Email2Address] = '" & strAddress _
            & "' or [Email3Address] = '" & strAddress & "'")
        If Not objContact Is Nothing Then
            ' 連絡先アイテムが見つかったらアドレスに対応する表示名を取得
            With objContact
                If .Email1Address = strAddress Then
                    strContact = .Email1DisplayName
                End If
                If .Email2Address = strAddress Then
                    strContact = .Email2DisplayName
                End If
                If .Email3Address = strAddress Then
                    strContact = .Email3DisplayName
                End If
            End With
            If InStr(strContact, strAddress) = 0 Then
                ' 表示名にアドレスが含まれていなければ追加
                strContact = strContact & "<" & strAddress & ">"
            End If
        Else
            ' 連絡先アイテムが見つからなければ元の表示名のまま追加
            If InStr(objRec.Name, objRec.Address) = 0 Then
                ' 表示名にアドレスが含まれていなければ追加
                strContact = objRec.Name & "<" & strAddress & ">"
            Else
                strContact = objRec.Name
            End If
        End If
        ' To か Cc かを保存しておく
        recType = objRec.Type
        ' 解決した名前で追加
        Set objRec = objItem.Recipients.Add(strContact)
        objRec.Type = recType
        objRec.Resolve
    Next
    ' 元の受信者は削除
    For i = cRec To 1 Step -1
        objItem.Recipients(i).Delete
    Next
    objItem.Save
End Sub

マクロの登録方法やメニューへの追加について

2016年7月23日

フォルダーに含まれるメールをすべてテキスト形式に変換するマクロ

コメントにて以下のご要望をいただきました。


初めまして、お世話になります。
日常的にoutlookを使用しており、メールフォルダが20GBを超える状態です。
添付ファイルはこちらのマクロで、一括削除を行う方法を知り、ずいぶん整理が進みました。
マクロ制作のお願いですが、授受しているメールが、HTMLか、リッチテキスト形式なのですが、
その受信メールをフォルダごと、テキストへ変換するマクロがあると、とても助かります。
よろしくご検討願います。



MailItem の BodyFormat プロパティには本文形式が格納されているのですが、このプロパティにテキスト形式を意味する olFormatPlain を設定して保存すると、本文形式をテキストに変換することができます。
表示中のフォルダーに含まれるメールをすべてテキスト形式にするマクロは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ConvertToText()
    Dim fldCurrent As Folder
    Dim objItem As MailItem
    ' 現在表示中のフォルダーを取得
    Set fldCurrent = ActiveExplorer.CurrentFolder
    ' フォルダーのすべてのアイテムをチェック
    For Each objItem In fldCurrent.Items
        ' 本文形式を確認
        If objItem.BodyFormat <> olFormatPlain Then
            ' テキスト形式でなければ、テキスト形式にして保存
            objItem.BodyFormat = olFormatPlain
            objItem.Save
        End If
    Next
End Sub

マクロの登録方法やメニューへの追加について

2016年7月16日

Outlook 2016/2013/2010 のセキュリティ修正プログラム MS16-088 がリリース

Filed under: 修正プログラム — outlooklab @ 12:00 PM

7/13 に Office 2016、Office 2013、Office 2010 および Office 2007 のセキュリティ修正プログラムがリリースされました。
Outlook 自体は 2016、2013、2010 でセキュリティ修正がリリースされています。
また Word 2016、2013 のセキュリティ修正には、Outlook のセキュリティ関連ではない修正も含まれています。
以下は各製品のそれぞれの KB へのリンクです。

Office 2016

Outlook 2016 のセキュリティ修正

2016 の Outlook のセキュリティ更新プログラム MS16-088: 説明: 2016 年 7 月 12 日
7 件のセキュリティ関連ではない不具合修正も行われています。

Word 2016 のセキュリティ修正

MS16-088: Description of the security update for Word 2016: July 12, 2016
5 件の Outlook 関連の不具合修正が行われています。

Office 2013

Outlook 2013 のセキュリティ修正

MS16-088: Description of the security update for Outlook 2013: July 12, 2016
5 件のセキュリティ関連ではない不具合修正も行われています。

Word 2013 のセキュリティ修正

Word 2013 のセキュリティ更新プログラム MS16-088: 説明: 2016 年 7 月 12 日
1 件の Outlook 関連の不具合修正が行われています。

Office 2010

Outlook 2010 のセキュリティ修正

MS16-088: Description of the security update for Outlook 2010: July 12, 2016
セキュリティ修正のみが行われています。

次ページへ »

WordPress.com で無料サイトやブログを作成.