概要
社内で使っているoutlookマクロを更新のたびに導入代行をしないといけないのが面倒なのでインストール方法とかないか調べてみた。
Project1 は、次のフォルダーに VbaProject.otm としてハード ディスクに格納されます。
:\Users \ \AppData\Roaming\Microsoft\Outlook
新しい VBA プロジェクトを開始する場合は、理論的には既存のすべてのモジュールとフォームをエクスポートできます。 しかし、これは通常、現実的なアプローチではありません。 代わりに、次の手順に従います。
1.Outlook を終了します。
2.指定されたパスで VbaProject.otm ファイルを探します。
3.VbaProject-testing.otm など、ファイルの名前をわかりやすい名前に変更します。
4.Outlook を再起動します。
要は<Drive>:\Users \ <LogonName> \AppData\Roaming\Microsoft\Outlook
にOTMファイルをコピペすればいいらしい。
あとはユーザー名を取得してobjFS.CopyFile
してやればいい。
コード
2021/10/02 xml追加対応
イベント系を追加したらOTM以外にxmlが追加されたので
Call main
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
Sub main()
' On Error GoTo Err
'変数を宣言
Dim str_from
Dim str_to
str_from = Array("VbaProject.OTM","Outlook.xml")
Set objFS = CreateObject("Scripting.FileSystemObject")
dim i
For i = 0 to ubound(str_from)
str_to = GetUserName & str_from(i)
'ファイルを上書きコピーする
Call objFS.CopyFile(".\" & str_from(i), str_to)
Next
MsgBox "complete"
Exit Sub
'Err:
' Select Case Err.Number
' Case Is = "800A0046": MsgBox "Outlookを閉じて再度実行してください。"
' End Select
End Sub
'-------------------------------------------------------------------------------
Private Function GetUserName()
'ユーザー名を取得する
Dim x
Set x = WScript.CreateObject("WScript.Network")
'WScript.Echo "ユーザ名:" & x.UserName 'ユーザー名をポップアップ表示
'パスをセット
Dim Path
Path = "C:\Users\" & x.UserName & "\AppData\Roaming\Microsoft\Outlook\"
GetUserName = Path
End Function
余談
VBSはOn Error Goto
が使えないらしいの失敗時の対応が出力できない。