2013-07-18 29 views
2

我有以下在Excel 2003中運行的VBA marco,它會阻止保存,另存爲,保存工作區,發送到 菜單,但我現在需要做相同的,但爲Excel 2010?如何在Excel 2010中禁用「保存併發送」(在文件功能區(在Office 2010中稱爲後臺)?

Application.CommandBars(「工作表菜單欄」)。控制(「文件」)。控制(「另存爲...」) .Enabled =假

Application.CommandBars( 「工作表菜單欄」)。控制( 「文件」)。啓用控件( 「保存」)。=假

個 Application.CommandBars( 「工作表菜單欄」)。控制( 「文件」)。控制( 「保存工作區...」)。啓用=假

Application.CommandBars( 「工作表菜單欄」 ).Controls( 「文件」)。控制( 「發送到」)。啓用=假

Application.CommandBars( 「工作表菜單欄」)。控制( 「格式」)。控制( 「表」) .Enabled = False

在Excel 2010中有一個名爲「保存併發送」(位於文件功能區下)的「新菜單」,我想也將其禁用...您如何執行此操作?我在尋找相當於像這樣的一行:

'Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False

謝謝您的幫助。

+0

如果試圖阻止保存,不會更好地處理「Workbook_BeforeSave」事件? – Juliusz

+1

請參閱[這裏](http://stackoverflow.com/questions/11697013/remove-save-send-from-file-menu-in-excel-2010-using-custom-xml)尋找答案。 –

+0

+1 @SkipIntro這是Ribbon/XML編輯的工作。鏈接的答案可能需要一些更多的細節讓OP執行。我相信這是'FileSendAsAttachment'按鈕控件。 –

回答

4

對於來自Microsoft的Ribbon UI示例/文檔,here。他們會建議你使用CustomUI Editor

在CustomUI編輯器中打開您的文件(必須是Excel 2007+文件擴展名,如XLSX,XLSM,XLAM等)。然後在編輯器中使用此XML:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<backstage> 
    <tab idMso="TabShare" visible="false" enabled="false"> 
    </tab> 
</backstage> 
</customUI> 

保存該文件並關閉CustomUI編輯器。

然後,打開你的文件。轉到文件/ Backstage視圖,你應該看到Save and Send選項卡已被刪除:

screenshot of disabled TabShare

注:這已禁用從後臺視圖整個「保存&發送」選項卡。應該可以使用XML來微調這個,即啓用選項卡,但禁用其中的特定控件(例如,也許你只想禁用Send as Attachment,但你想讓其他選項啓用等),但我避難沒有完全制定出XML層次結構來禁用只有控制的具體Send As Attachment

希望這會有所幫助!

從評論更新

1)用戶會發現「正常」功能時,該文件被關閉或另一個文件時處於活動狀態。UI自定義僅適用於包含自定義用戶界面XML部件的文件,因此如果您打開了多個文件,則只有該文件會受到禁用的Save & Send選項卡的影響。

2)不幸的是,這是而不是與Excel 2003或更早版本兼容。 CustomUI/XML不是傳統XLS文件的一部分,因此無法在這些版本中實現。對於2003年以前的Excel版本,您必須使用可通過VBA控制的傳統CommandBars。將一些VBA代碼放在一起會比較容易,這些代碼將檢查哪個版本的Excel,並且只有當用戶使用2003或以前的版本時才運行子例程來禁用某些特定的控件。

如果試圖保存下來這XLS文件,您將收到一條警告,說明此功能與文件類型不兼容:

CustomUI XML not compatible with XLS files

此外,您不能打開XLS文件在CustomUI編輯器中。

+0

首先,非常感謝您的回答。在我驗證答案之前提出了兩個簡單的問題:1.這是否與有問題的Excel文件相關聯,而不是整個Excel?換句話說,一旦他關閉我的xls文件,用戶是否會找回它的'正常'配置? 2.這個excel文件仍然適用於仍在使用Excel 2003的用戶嗎?在此先感謝您的幫助。 – Hubert

+0

@Hubert我將更新我的答案以解決您的兩個問題。 –

+0

謝謝大衛。它像一個魅力。 – Hubert

3

我試圖命令下面列出這些被禁用保存和發送菜單中Excel 2010

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Send To").Enabled = False 
Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False 
+0

+1,但值得注意的是,此方法禁用** ALL ** Excel文件的這些控件,事實上,它將爲整個Excel應用程序禁用它,除非您重新啓用它們。 –

-1

此命令爲我工作

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<commands> 
    <command idMso="TabShare" enabled="false"/> 
</commands> 
</customUI>