none
OutlookのVBAで、起動時にモジュールをインポートしたい。 RRS feed

  • 質問

  • Outlookのコミュニティにて質問しました所、こちらに誘導を頂きましたので

    こちらにて再度、ご質問させて下さい。(元の場所とマルチポストになってしまい申し訳ありません)

    Outlookのマクロを作成しています。

    モジュールが増えてきたのとバージョンの管理が難しくなったので、
    作成済みのマクロをエクスポートして、モジュールをbasファイルにてローカルで管理をするようにし
    起動時に(もしくは任意に)モジュールをインポートするマクロを作成したいと考えております。
    現在、インポートする部分で詰まっています。
    その他のサポートや検索などから、VBComponents.Importなどを使用するのではないかとあたりをつけましたが、
    Outlookにて使用可能なのか、また使えるのであればoutlooktではVBIDE.VBProjectにsetするべきオブジェクトが
    何なのかを教えて頂きたいです。
    宜しくお願い致します。

    2013年6月24日 19:50

すべての返信

  • 同じ問題にぶつかっています。

    質問投稿者の方へ:

    当問題の回答は得られましたでしょうか。

    得ていれば私にも展開頂けないでしょうか。

    宜しくお願い致します。

    2015年12月18日 10:36
  • こんにちは。

    オブジェクトブラウザーを見てみましたが、OutlookではVBEオブジェクトがサポートされていないようです。
    そのため、他のOfficeアプリケーションと同じ方法でVBComponentを操作することができませんが、下記ページにあるように、OutlookのVBAプロジェクトは「VbaProject.OTM」(%APPDATA%\Microsoft\Outlook\VbaProject.OTM)ファイルに記録されていますので、スクリプトか何かで当ファイルをコピー後Outlookを起動するようにしてはいかがでしょうか。

    '保存していた[VbaProject.OTM]ファイルを元の場所にコピー後Outlookを起動するVBScript
    Option Explicit
    
    Dim BkFilePath
    Dim OlDataFolderPath
    Const OtmFileName = "VbaProject.OTM"
    Const CSIDL_APPDATA = 26
    
    BkFilePath = "C:\Test\" & OtmFileName 'OTMファイルのコピー元
    OlDataFolderPath = CreateObject("Shell.Application") _ 
                       .Namespace(CSIDL_APPDATA).Self.Path & ChrW(92) & _ 
                       "Microsoft\Outlook\"
    With CreateObject("Scripting.FileSystemObject")
      If .FileExists(BkFilePath) = True Then
        .CopyFile BkFilePath, OlDataFolderPath, True
      End If
    End With
    CreateObject("WScript.Shell").Run "OUTLOOK.EXE", 1, False

    エクスポートに関しては、逆に、適当なタイミングでVbaProject.OTMファイルをコピーしておけば良いかと思います。
    2015年12月21日 1:19