[PR]今日のニュースは
「Infoseek モバイル」

cdbiff for Outlook 本文へジャンプ

最終更新日:2006.03.26

cdbiff for Outlook


cdbiff for Outlook とは

Microsoft Outlook で動作するVBA (いわゆるマクロ) です。

メールが到着すると、CD−ROMドライブがイジェクトされます。それだけです・・・

       

高林 哲さんが作成された cdbiff にインスパイアされて作成しました。

職場では、Outlook(Exchange Server)が標準なのですが、メール用PCと開発用PCを切換えながら使っていると、 新着メールを見逃してしまうことがありました。

cdbiffの存在を知った瞬間に、これだと思い、一気呵成に作成しました。


動作環境

Outlook 2000 / 2002 /2003 で動作確認を行いました。

残念ながら、Outlook Express では、VBAが動作しないため使えません。


セットアップ方法


マクロのセキュリティレベルを『中』にする


Office 2000 SP2 以降、マクロ セキュリティが自動的に『高』に設定されます。

この "cdbiff for Outlook" のような、署名のないマクロを実行するためには、セキュリティレベルを「中」にする必要があります。


  • [ツール] メニューの [マクロ] より [セキュリティ] をクリックして、セキュリティレベルを「中」に設定する

    security lebel

  • セキュリティレベルを変更することにより、不用意にマクロを実行する(=ウイルス感染)リスクが高まります。

参考 : [Microsoft] マクロのセキュリティ レベルが「高」に変更される


コードを入力する

  1. [ツール] メニューの [マクロ] をポイントし、[Visual Basic Editor] をクリックする。

    Visual Basic Editor

  2. [プロジェクト - Project1] ウィンドウで [Project1] をダブルクリックし、[Microsoft Outlook Objects] をダブルクリックする。

  3. [ThisOutlookSession] をダブルクリックしてコード ウィンドウを開く。

  4. コード ウィンドウに次のコードを入力する。
    Public WithEvents myOlApp As Outlook.Application
    
    Public Sub Application_Startup()
      Set myOlApp = CreateObject("Outlook.application")
    End Sub
    
    Private Sub myOlApp_NewMail()
      Call EjectCd
    End Sub
    
    Private Sub EjectCd()
      Dim fso
      Dim shell
      Dim folder
      Dim folderItem
      Dim drive
      Dim verbName
      
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set shell = CreateObject("Shell.Application")
      Set folder = shell.NameSpace(17)
      
      If folder.Title = "My Computer" Then
        verbName = "E&ject"
      Else
        verbName = "取り出し(&J)"
      End If
    
      For Each folderItem In folder.Items
        If folderItem.IsFileSystem Then
          If Right(folderItem.Path, 2) = ":\" Then
            Set drive = fso.GetDrive(folderItem.Path)
            If drive.DriveType = 4 Then ' CD-ROM
              Call folderItem.InvokeVerb(CStr(verbName))
              Exit For
            End If
          End If
        End If
      Next
    End Sub

    2006/02/20 追記 : Outlook 2000 の場合は、1行目を以下のように修正する。
    Dim WithEvents myOlApp As Outlook.Application

  5. [ファイル] メニューの [Project1 の上書き保存] または [VbaProject.OTM の上書き保存] をクリックする。

    This Outlook Session

  6. Outlook を再起動してコードを実行する。

  7. Outlook 起動時にマクロを有効にする。

    enable macro



参考



更新履歴


  • 2006.02.18 : 初回公開
  • 2006.02.20 : Outlook 2000 の場合のコード追記
  • 2006.03.26 : 動作確認環境に Outlook 2003 を追加


注意事項

このマクロを使用したことにより発生したいかなるトラブルも保障しません。

また、Outlookのマクロのセキュリティレベルを変更することにより、ウイルスに感染するリスクが高まります。

このマクロは利用者の責任においてお使いください。

そんな、大真面目にこのマクロを使う人はいないと思いますが・・・