[英]Outlook 2013 VBA: store user defined settings
目前在辦公室我們有Outlook 2003.我們將遷移到Outlook 2013.在Outlook 2003中,我們有一個命令欄,例如將郵件項目保存到用戶指定的文件夾或將項目移動到所需的團隊。 在用戶表單中,最終用戶可以將其設置設置為所需的文件夾,或選擇他當前所在的團隊。 在此設置表單中,用戶可以填寫多個輸入字段。 每當他點擊命令欄上的按鈕時,Outlook都會檢查他的設置,以查看他所在的團隊,所需的保存文件夾等。此用戶定義的設置由其標簽存儲和調用(Application.ActiveExplorer.CommandBars("Toolbar").Controls.Item(1).tag)
到目前為止,我在互聯網上發現Outlook 2013不支持命令欄。 我可以安裝commandBar,但是一旦你重新啟動outlook,該欄就會消失,設置也就消失了。
有沒有辦法將最終用戶的設置保存/存儲在用戶窗體中,以便腳本根據他的設置將郵件項目保存到正確的文件夾或團隊?
我試圖找到一個解決方案,但還沒有找到它,或者不知道在哪里看。
希望您能引導我找到正確的方向尋找解決方案。
(注意:我知道一點VBA,可以讀寫它,但很難解釋它是如何工作的。如果我在問題中遺漏了一些重要信息,請告訴我。)
Outlook不允許使用VBA自定義功能區UI。 您唯一能做的就是為QAT按鈕指定一個宏(或在Outlook中手動添加控件)。
您需要開發一個加載項才能自定義功能區UI(也稱為Fluent UI)。 有關詳細信息,請參閱演練:使用功能區設計器創建自定義選項卡 。
在MSDN中的以下系列文章中閱讀有關Fluent UI的更多信息:
有沒有辦法將最終用戶的設置保存/存儲在用戶窗體中,以便腳本根據他的設置將郵件項目保存到正確的文件夾或團隊?
使用Tag屬性不是存儲用戶設置的最佳方式。 當然,您可以通過標准方式在PC上存儲設置 - 文件(XML,文本或您自己的二進制格式),Windows注冊表等。
但Outlook對象模型為此提供了隱藏的項目。 Folder類的GetStorage方法返回父文件夾上的StorageItem對象,以存儲Outlook解決方案的數據。 有關詳細信息,請參閱存儲解決方案的數據。
正如我所承諾的一些代碼樣本,我用來存儲和獲取設置。 也許不是最好的方法,但它解決了我存儲設置的問題,也許它可以幫助別人。
首先,我做了一點檢查,看看設置是否已經存在。
Function Hidden_Settings_Aanwezig() As Boolean
Dim oNs As Outlook.Namespace
Dim oFL As Outlook.folder
Dim oItem As Outlook.StorageItem
On Error GoTo OL_Error
Set oNs = Application.GetNamespace("MAPI")
Set oFld = oNs.GetDefaultFolder(olFolderInbox)
Set oItem = oFld.GetStorage("Hidden Settings", olIdentifyBySubject)
If oItem.Size <> 0 Then
Hidden_Settings_Aanwezig = True
Else
Hidden_Settings_Aanwezig = False
End If
Exit Function
OL_Error:
MsgBox (Err.Description)
Err.Clear
End Function
如果沒有,則以下代碼使用以下代碼在userform上創建基於tekstbox和復選框的設置
Function Maak_Settings_Hidden()
Dim oNs As Outlook.Namespace
Dim oFld As Outlook.folder
Dim oSItem As Outlook.StorageItem
On Error GoTo OL_Error
Set oFld = Application.Session.GetDefaultFolder(olFolderInbox)
Set oSItem = oFld.GetStorage("Hidden Settings", olIdentifyBySubject)
'repeat the next to lines for every setting you want to store
oSItem.UserProperties.Add "Export Folder", olText
oSItem.UserProperties("Export Folder").Value = TextBox1.Text
oSItem.Save
Exit Function
OL_Error:
MsgBox (Err.Description)
Err.Clear
End Function
使用以下代碼調用上述函數:
If Hidden_Settings_Aanwezig = True Then
Call Get_Hidden_Settings_Startup
Else
Maak_Settings_Hidden
End If
要使用其中一個設置,請使用以下代碼。 在主要子中我使用以下行:
DestFolder = Get_Hidden_Settings("Export Folder")
要調用此功能:
Function Get_Hidden_Settings(Setting) As String
Dim oNs As Outlook.Namespace
Dim oFL As Outlook.folder
Dim oItem As Outlook.StorageItem
On Error GoTo OL_Error
Set oNs = Application.GetNamespace("MAPI")
Set oFld = oNs.GetDefaultFolder(olFolderInbox)
Set oItem = oFld.GetStorage("Hidden Settings", olIdentifyBySubject)
If oItem.Size <> 0 Then
Get_Hidden_Settings = oItem.UserProperties(Setting)
End If
Exit Function
OL_Error:
MsgBox (Err.Description)
Err.Clear
End Function
如果我正確理解你的問題,我會做的是以下內容:
1)將您的VBA內容導出到* .bas文件(用於模塊)和* .frx(用於用戶表單)這是在VBA編輯器File - > Export中完成的。 您為每個項目(模塊和用戶表單)執行此操作。 將這些文件保存在記憶棒上,或者適合您的文件中。
2)將Outlook 2013中的這些文件導入VBA編輯器(同樣的方法,但是 - >文件 - >導入當然),例如從記憶棒中加載它們。
這應該使您的VBA代碼在新的Outlook 2013環境中可用。
3)您的命令欄將不可用。 但您可以輕松創建其他內容:在Office 2013(等)產品中,您可以向“功能區”添加內容。 例如,您可以創建一個名為“我自制工具”的新選項卡,您可以在那里放置調用VBA程序的按鈕。 你會在那里找到“創建新......”的按鈕
為此: - >文件 - > Optiobs - >自定義功能區 - >宏
注意:在Office 2013(等)的標准安裝中,您將無權訪問VBA編輯器。 要使編輯器可用,請執行 - >文件 - >選項 - >自定義功能區,並在“開發人員工具”字段中設置勾選標記。 這將使該名稱的選項卡顯示在“功能區”中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.